这是我的批处理文件try.cmd:
for /f "delims=;" %%d in ("%PATH%") do echo %%d
奇怪的是,只有路径中的第一个目录被打印出来,然后循环停止了。如何遍历路径中的所有目录?
答案 0 :(得分:2)
你的意思是
@ECHO OFF
SETLOCAL
ECHO %path:;=&ECHO(%
您的版本不起作用,因为调用for /f
工具需要delims=
,但这意味着只有一个输入“行”; for
命令将迭代序列,但这意味着没有delims
可用...
答案 1 :(得分:1)
@SETLOCAL
@ECHO OFF
SET "P=%PATH%"
:EXTRACT_LOOP
for /f "tokens=1* delims=;" %%p in ("%P%") do (echo %%p & SET P=%%q)
IF NOT "%P%" == "" GOTO :EXTRACT_LOOP
可能还有另一种聪明的方法。
答案 2 :(得分:0)
试试这个:
@echo off
:loop
Echo %~1
shift /1
if "%~1" NEQ "" goto loop
C:\>Printf.bat 1 2 3 4 5 6
1
2
3
4
5
6
C:\>set test=A;B;C;D
C:\>Printf.bat %test:;= %
A
B
C
D
C:\>Printf.bat %Path:;= %
...
C:\>