20 年来我一直在使用数十种语言进行编程,但无论我如何努力,我始终无法理解 Windows cmd shell 批处理文件中的“FOR”是如何工作的。我读
http://www.ss64.com/nt/for.html http://www.ss64.com/nt/for.html
以及互联网上的其他几篇文章,但仍然令人困惑并且无法完成任何事情。
有人能给我一个关于“FOR”一般如何工作的简洁解释吗?
对于一个更具体的问题,如何迭代 %PATH% 变量中的每个路径?
我尝试过
rem showpathenv.bat
for /f "delims=;" %%g in ("%PATH%") do echo %%g
这只会显示第一条路径,而不是全部路径。为什么 ?我做错了什么?
没有一个答案实际上有效。我自己设法找到了解决方案。
这有点黑客,但它解决了我的问题:
echo off
setlocal enableextensions
setlocal enabledelayedexpansion
set MAX_TRIES=100
set P=%PATH%
for /L %%a in (1, 1, %MAX_TRIES%) do (
for /F "delims=;" %%g in ("!P!") do (
echo %%g
set P=!P:%%g;=!
if "!P!" == "%%g" goto :eof
)
)
哦 !我讨厌批处理文件编程!
Updated
马克的解决方案更简单,但它不适用于包含空格的路径。这是马克解决方案的稍作修改的版本
echo off
setlocal enabledelayedexpansion
set NonBlankPath=%PATH: =#%
set TabbedPath=%NonBlankPath:;= %
for %%g in (%TabbedPath%) do (
set GG=%%g
echo !GG:#= !
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)