繁体   English   中英

使用.bat文件循环浏览文件夹/子文件夹,并提供该文件夹/子文件夹作为exe的输入

[英]Use .bat file to loop through folders/subfolder and and provide the folder/subfolder as input to an exe

我必须运行存储在特定文件夹中的工具(.exe)。(说C:\\ Temp)
此工具的输入参数是放置在其他各个文件夹/子文件夹中的(.inf)文件。(例如C:\\ Test \\ SampleInfFiles,C:\\ Test \\ SampleInfFiles \\ Inf2)

我想创建一个批处理文件,在其中可以在各个文件夹上递归运行此工具。

我不确定如何提供inf的文件夹名称作为工具的输入参数。

@echo off 
for /r /d C:\Test\SampleInfFiles %%x in (dir /b *.inf) do(
pushd "%%x"
call C:\Test\ScanInf.exe
popd
)

我是这一切的新手。 您能帮忙创建一个批处理文件吗?

如果我理解正确,则需要为可执行文件指定包含一个或多个inf文件的文件夹,而不是inf文件本身。

显然,参数的顺序很重要。 for期望/r之后的部分为路径。 此外,您可以仅指定*作为集合。

现在,循环将浏览给定文件夹的所有子文件夹。 在循环内部,它将检查该文件夹是否包含inf文件(在该级别上)。 如果是这样,则以文件夹为参数调用可执行文件。 注意变量中~的使用。 这会删除所有引号,因此您可以安全地添加引号,而不必冒双引号的风险。

@echo off 
for /d /r C:\Test\SampleInfFiles\ %%x in (*) do (
  pushd "%%~x"
  if exist %%x\*.inf call C:\Test\ScanInf.exe "%%~x"
  popd
)

请参阅: 使用批处理参数

这里是一个很好的单线:

for /R "C:\Test\SampleInfFiles" /D %%X in (*.*) do if exist "%%~fX\*.inf" call C:\Test\ScanInf.exe "%%~fX"

如果要直接在命令提示符下运行该命令,请将每个%%替换为%

我认为可以省略call命令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM