0
A
回答
1
在此請看:
@ECHO OFF
Setlocal EnableDelayedExpansion
SET 1="html"
echo %1%
echo !1!
PAUSE
執行該代碼參數abc
將返回
abc
html
顯然,你需要Setlocal EnableDelayedExpansion
要能 「覆蓋」 %1。但是,這實際上不會覆蓋%1,而是使其更新值可訪問。 AFAIK無法真正覆蓋它。只有一個解決辦法,我能想到的:
與「HTML」作爲第二個參數打電話給你的文件,並使用SHIFT
:
ECHO %1
SHIFT
ECHO %1
執行使用參數X和HTML代碼(yourfile.bat X HTML)將打印:
X
HTML
2
%1
不是您使用SET分配的變量。它表示調用批處理腳本(test.bat arg1
或call test.bat arg1
)或子例程(call :subroutine arg1
)的第一個參數。
如果你想改變%1的值,那麼你在做CALL的地方,而不是在CALLed腳本/例程中。
有些情況下,使用set %1=value
行。您可能有一個例程計算一個值,然後將結果存儲在一個變量中,該變量的名稱從第一個參數中檢索到該例程。
但是,如果該例程被調用時沒有參數,則該行會擴展爲set =value
,這會產生您正在獲取的錯誤。
如果您正在使用%1
參數,並且有條件地想要在腳本中「更改值」,那麼您必須將該值傳遞給環境變量,並從該點開始處理該變量。
一個簡單的例子是提供一個默認值,如果該參數不過去了:
@echo off
setlocal
set "arg1=%~1"
if not defined arg1 set "arg1=default"
REM From now on you never refer to `%1` but use `%arg1%` instead.
相關問題
- 1. 有沒有辦法從maven配置執行批處理文件?
- 2. 有沒有辦法指出批處理文件中的最後n個參數?
- 3. 有沒有辦法做到這一點? - 批處理文件
- 4. 有沒有辦法在PHP PDO中設置一個參數?
- 5. 有沒有辦法檢查批處理文件中的重定向?
- 6. 通過另一個批處理文件參數設置CATALINA_HOME?
- 7. 有沒有辦法在沒有gotos的批處理文件中循環?
- 8. 批處理文件中設置WMI輸出有我的批處理腳本第一次去一個變量
- 9. 批處理文件沒有啓動另一個批處理文件
- 10. TortoiseHg:有沒有更新批處理文件圖標的方法?
- 11. 從另一個批處理文件中調用一個批處理,並從外批處理中設置內批處理文件參數
- 12. 有沒有辦法從批處理文件運行Lotus Notes代理?
- 13. 有沒有辦法重置DbContext而不處理並重新實例化它?
- 14. 從另一個批處理文件更新批處理文件
- 15. 更新批處理文件:實現有條件參數
- 16. 批處理文件 - 設置
- 17. 如果第一個參數有逗號,則讀取批處理文件中的第二個參數
- 18. 批處理文件沒有設置變量
- 19. 有沒有辦法爲函數創建一個預處理宏?
- 20. 有沒有辦法從Windows批處理文件啓動對話框?
- 21. 有沒有辦法使用批處理文件在目錄中播放mp4
- 22. 有沒有辦法在批處理文件上運行AS/400的命令
- 23. 有沒有辦法用Vim自動重新設置大括號?
- 24. 有史以來第一個簡單的批處理文件
- 25. 有沒有辦法安排Photoshop批處理
- 26. 有沒有辦法通過vSphere API執行批處理?
- 27. 批處理文件沒有采取
- 28. 有沒有辦法爲一個請求設置一個cookie?
- 29. 將第一個文件夾設置爲變量批處理文件
- 30. 有沒有辦法重建一個Xcode項目文件?
你到底想幹什麼?你的代碼將變量設置爲「html」,該變量的名稱是過程的第一個參數。請解釋你想要在上下文中做什麼 - 向我們展示一點你的代碼,而不是單獨的一個語句,並解釋你打算作爲參數以及你的結果應該通過編輯你的問題來解釋。 – Magoo
我想你應該重新思考使用另一種解決方案 – jeb