簡體   English   中英

批處理文件以運行具有不同名稱的文件夾和子文件夾中的 all.bat 文件

[英]Batch file to run all .bat files in folders and sub-folders with different names

我需要一個簡單的腳本來運行具有不同名稱的文件夾和子文件夾中的 all.bat 文件。 這是一個例子:

主文件夾> 蝙蝠文件夾 1> 蝙蝠文件 1.bat

主文件夾> 蝙蝠文件夾 2> 蝙蝠文件 2.bat

. . .

主文件夾> 蝙蝠文件夾 N> 蝙蝠文件 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

但是問題是直接文件夾地址。 我無法手動輸入文件夾名稱並一一運行。 這需要很長時間。 我希望腳本通過所有文件夾和子文件夾 go 忽略它們的名稱並全部運行。 最好讓腳本在主文件夾而不是文件夾地址中運行!

不是一個完整的答案,但我認為這可能有助於您開始:

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"
)

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

for /r將遞歸地遍歷所有子目錄中的所有*.bat文件到任何深度。

我找到了一個替代方案。 我使用代碼dir /s /b *.bat > runall.bat來獲取完整的目錄列表,然后將它們全部替換為pushd C:\Users\%USERNAME%\Desktop\Bat Folder 1\Bat File 1.bat

這絕對不是 go 的好方法,但至少它解決了我的問題。

編輯:它根本行不通。 只讀取第一行並忽略 rest。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM