【发布时间】:2009-05-03 15:09:51
【问题描述】:
我已经用几十种语言编程了 20 年,但无论我多么努力,我都无法理解“FOR”在 windows cmd shell 批处理文件中的工作原理。我读了
http://www.ss64.com/nt/for.html
和互联网上的其他几篇文章,但仍然感到困惑,无法完成任何事情。
谁能简要解释一下“FOR”的一般工作原理吗?
对于一个更具体的问题,我如何遍历 %PATH% 变量中的每个路径? 我试过了
rem showpathenv.bat
for /f "delims=;" %%g in ("%PATH%") do echo %%g
这只会显示第一条路径,而不是所有路径。为什么 ?我做错了什么?
【问题讨论】:
-
“接受”的答案确实错过了
for /f循环可用的一些重要功能。看看我自己的答案......我认为它比马克的更接近你的要求。但是,我不能 100% 确定你要的是什么 ;-) -
没有人回答你的问题:'为什么?我做错了什么?' -- 所以我现在试试:它只向你显示第一条路径,因为你只是要求它。它按设计工作(我不是说设计很好)。如果你想要更多,你必须要求更多:在字母表中的 'g' 之后是 'h' -- 所以添加
echo %%h & echo %%i & echo %%j以查看另外 3 个路径目录。 -
@pipitas and tokens=... C:\>for /f "tokens=1,2,3,4 delims=;" %g in ("%PATH%") 做回显 %g %h %i
-
@pipitas 清酒的答案看起来很灵活,不需要很长的令牌列表,使用替换(参见 set /?)来处理路径。
标签: batch-file iteration cmd