簡體   English   中英

批處理腳本-參數嵌套在變量內部?

[英]Batch Script - Parameter Nested Inside Variable?

這是場景:

我有一個父腳本,它調用大約十二個子腳本,其中一個是有點復雜的文件夾/文件同步操作。 每個子腳本都將變量寫入批處理文件(例如variable.bat),然后由父腳本在下一次執行時加載。

文件夾同步腳本根據通過父腳本傳遞給它的參數從大量文件夾中進行選擇。

子腳本的SET命令如下所示:

ECHO SET pair-folder-%1=yes>>c:\variable.bat

這將在下一次運行時產生一個由父腳本加載的變量。 問題在於:如何編寫一個動作(通過IF陷阱),在下一次子腳本出現時調用該變量? 我想象我的IF陷阱看起來像這樣:

IF %pair-folder-%1%=yes GOTO nopair

問題是我似乎無法使批處理正確解釋-我嘗試使用延遲擴展等幾種不同的方式嵌套變量,是否有必要先將參數映射到局部變量?

基本上,一旦父腳本在下一次執行時調用了variable.bat,我該如何從子腳本中引用新設置的變量?

由於要將set pair-folder-%1=yes行追加到variable.bat因此您將獲得varable.bat以建立一組增加的pair-folder-*變量。

現在,如果要檢查是否設置了pair-folder-% ,則

if defined pair-folder-%1 ...

會為你做的。

如果要查找pair-folder-%1的值(即不只是設置還是未設置),則

set "valuefound="
for /f "tokens=1*delims==" %%i in ( 'set pair-folder-%1 2^>nul' ) do (
 if /i "%%i"=="pair-folder-%1" set "valuefound=%%j"
)

應該這樣做-如果變量未定義,則valuefound將被“設置”為沒有值(即,未定義),否則其值為。

暫無
暫無

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

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