我必须运行存储在特定文件夹中的工具(.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
)
我是这一切的新手。你能帮忙创建一个批处理文件吗?
答案 0 :(得分:0)
如果我理解正确,您需要将包含一个或多个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
)
答案 1 :(得分:0)
这是一个不错的单行:
for /R "C:\Test\SampleInfFiles" /D %%X in (*.*) do if exist "%%~fX\*.inf" call C:\Test\ScanInf.exe "%%~fX"
如果要直接在命令提示符中运行它,请将每个%%
替换为%
。
我认为call
命令可以省略。