Batch file windows批处理:使用两个不同列表循环
我有目录DIR1,DIR2的列表。。。DIRn,每个文件中都有一个文件:FILE1,FILE2。。。菲伦。 我想对每个文件启动make:Batch file windows批处理:使用两个不同列表循环,batch-file,Batch File,我有目录DIR1,DIR2的列表。。。DIRn,每个文件中都有一个文件:FILE1,FILE2。。。菲伦。 我想对每个文件启动make: cd %%DIR1 make.exe %%FILE1 如果文件名始终相同,则很容易: for %%x in ( DIR1 DIR2 ... DIRn ) do ( cd %%DIR1 make.exe FILE rem my dirs are two levels deep cd ..\.. ) 有没有办法创建一个包含耦合元
cd %%DIR1
make.exe %%FILE1
如果文件名始终相同,则很容易:
for %%x in (
DIR1
DIR2
...
DIRn
) do (
cd %%DIR1
make.exe FILE
rem my dirs are two levels deep
cd ..\..
)
有没有办法创建一个包含耦合元素的列表,以便do()的每个实例都选择正确的一个?我最终创建了一个包含文本的EXAMPLE.TXT文件
DIR1 FILE1
DIR2 FILE2
...
DIRn FILEn
在这一点上,
for /F "eol=; tokens=1,2* " %%i in ( EXAMPLE.TXT ) do ( @echo %%i %%j )
运行所有行,将%%i设置为DIRx,将%%j设置为FILEx我最终创建了一个包含文本的文件EXAMPLE.TXT
DIR1 FILE1
DIR2 FILE2
...
DIRn FILEn
@echo off
setlocal
for %%A in (
"DIR1|FILE1"
"DIR2|FILE2"
"DIRn|FILEn"
) do for /f "tokens=1-2 delims=|" %%B in ("%%~A") do (
echo pushd "%%~B"
echo make "%%~C"
echo popd
)
在这一点上,
for /F "eol=; tokens=1,2* " %%i in ( EXAMPLE.TXT ) do ( @echo %%i %%j )
运行所有行,将%%i设置为DIRx,将%%j设置为FILEx
@echo off
setlocal
for %%A in (
"DIR1|FILE1"
"DIR2|FILE2"
"DIRn|FILEn"
) do for /f "tokens=1-2 delims=|" %%B in ("%%~A") do (
echo pushd "%%~B"
echo make "%%~C"
echo popd
)
可以使用2个进行循环
DIRn
和FILEn
可以使用分隔符配对,例如
路径中未使用的|
。第一个循环将获得每个字符串
与双引号配对。第二个循环将字符串拆分为
2个DIRn
string和FILEn
string的标记
代码中的回声用于测试输出,可以替换
如果需要,使用实际命令
可以使用2个进行循环
DIRn
和FILEn
可以使用分隔符配对,例如
路径中未使用的|
。第一个循环将获得每个字符串
与双引号配对。第二个循环将字符串拆分为
2个DIRn
string和FILEn
string的标记
代码中的回声用于测试输出,可以替换
如果需要,使用实际命令。我发现您实际上没有使用基于伪代码的批处理文件的经验。您必须提供一个比您提供的更好的示例。你说你有两张名单。第二张名单是什么?我假设第一个列表是您要处理的所有目录。请参阅帮助以了解,查看以了解/L
。您是否提前知道n
的值?据我所知,您没有两个列表。您有一个目录列表,并且希望在每个目录中创建一个文件,无论其名称如何。不是吗for/D%%x in(*)do(
&cd“%%x”
&for%%f in(*)do make.exe“%%f”
&cd..
&)
@squashman:我对Windows批处理文件没有任何经验。在unix上,我可能会创建一个用分隔符连接元素的列表,并使用awk获取相关部分,但在我使用的上下文中,unix不是一个选项。我发现您几乎没有使用基于伪代码的批处理文件的经验。您必须提供一个比您提供的更好的示例。你说你有两张名单。第二张名单是什么?我假设第一个列表是您要处理的所有目录。请参阅帮助以了解,查看以了解/L
。您是否提前知道n
的值?据我所知,您没有两个列表。您有一个目录列表,并且希望在每个目录中创建一个文件,无论其名称如何。不是吗for/D%%x in(*)do(
&cd“%%x”
&for%%f in(*)do make.exe“%%f”
&cd..
&)
@squashman:我对Windows批处理文件没有任何经验。在unix上,我可能会创建一个用分隔符连接元素的列表,并使用awk获取相关部分,但在我使用的上下文中,unix不是一个选项。