批处理文件,以运行具有不同名称的文件夹和子文件夹中的所有.bat文件

时间:2019-10-29 17:09:36

标签: windows batch-file

我需要一个简单的脚本来运行文件夹和子文件夹中具有不同名称的所有.bat文件。这是一个例子:

  

主文件夹> Bat文件夹1> Bat文件1.bat

     

主文件夹> Bat文件夹2> Bat文件2.bat

     

。 。

     

主文件夹> Bat文件夹N> Bat文件N.bat

那里有很多主题问同样的问题,但是对我真正有用的是:

@echo off
pushd C:\Users\%USERNAME%\Desktop\Bat Folder 1\
for /f "delims=" %%x in ('dir /b /a-d *.bat') do start "" "%%x"&timeout /t 2 >nul
popd

但是问题出在直接文件夹地址上。我无法手动输入文件夹名称并一一运行。这需要很长时间。我希望脚本忽略所有文件夹和子文件夹的名称,然后全部运行。最好让脚本在主文件夹中而不是文件夹地址中运行!

3 个答案:

答案 0 :(得分:1)

没有完整的答案,但是我认为这可能会帮助您入门:

for /r "C:\Users\%USERNAME%\Desktop" %%a in (*.bat) do start "" "%%~a"

您可能需要call "something.bat"start "" cmd /c "something.bat"

我想,如果您的批处理文件需要一个工作目录,则可以尝试以下操作:

:: Make sure you're in the correct drive
c:
for /r "C:\Users\%USERNAME%\Desktop" %%a in (*.bat) do (
   cd "%%~pa"
   call "%%~a"
)

答案 1 :(得分:0)

pushd "\Path\To\Main Folder"
for /r %%F in ("*.bat") do start /wait "" "%%~F"

for /r将对所有子目录中的所有*.bat文件进行递归迭代,直至达到任何深度。

答案 2 :(得分:0)

我找到了另一种选择。我使用代码dir /s /b *.bat > runall.bat获取了完整的目录列表,然后将它们全部替换为pushd C:\Users\%USERNAME%\Desktop\Bat Folder 1\Bat File 1.bat

这绝对不是一个好方法,但至少它解决了我的问题。

编辑:根本不起作用。只会读取第一行,而忽略其余的行。