2013-08-07 241 views
-1

我需要從第一個批處理文件調用批處理文件的語法。第二個批處理文件名稱隨版本而變化。所以我只有我的第二批文件名的一半。如何從批處理文件調用批處理文件

如何在特定文件夾中搜索並調用第二批文件..?

+2

你可以在'bat_file_1'中使用'call bat_file_2.bat' – GoodSp33d

+0

@ 2-Stroker我可以使用它,如果我知道我的第二批文件的完整名稱。但是在這裏,批處理文件名稱隨修訂而變化,所以我無法使用它。我想用bat_file * .bat搜索然後調用。我不知道該怎麼做 –

+0

有沒有辦法回答這個問題。我們怎麼知道當前版本是什麼?該文件夾中可能有任何與「前半部分」匹配的批處理文件。我們如何知道要運行哪一個?具體的規則。什麼是「上半場」?關於如何識別正確的「下半部分」有哪些規則? 「半部」如何組合成一個完整的文件名? – dbenham

回答

1

不知道修改前綴或後綴,但你可以嘗試這樣的事:

for /f "tokens=1" %%n in ('dir /on /l /b /a-d "bat_file_*.bat"') do set latest_bat_file=%%n 

它依賴於DIR /上以按名稱排序,所以它把最後一個條目按字母順序變量%latest_bat_file%。然後您可以撥打它:

call "%latest_bat_file%" 

這假定bat文件名中沒有空格,並且修訂版是數字或字母后綴。如果您使用數字,爲避免排序問題,請將您的修訂名稱前綴爲零(例如bat_file_001,bat_file_002)。

+0

作爲一種替代方法,假設新版本具有較新的時間戳(最終'/ t'也可以提供幫助),您可以不按名稱排序('/ on'),而按日期排序('/ od')。見'dir /?' – Stephan

0

FOR /R <path>將爲您走過目錄樹。

FOR /R "%DIR_TO_SEARCH%" %%b IN (matching_*.bat) DO cmd /c "%%~b" 

cmd /c將創建一個新的shell實例,這意味着如果被調用的.bat文件設置環境變量,他們不會在調用腳本改變。這通常是人們想要的。如果你真的想要保留這些副作用,你可以用call "%%~b"代替。