正如標題所說,我在 bat 腳本中保存(并因此列印)字串變數時遇到問題。當我嘗試使用以“!”開頭和/或結尾的字串時會出現問題。例子:
@echo off
pause
setlocal ENABLEDELAYEDEXPANSION
for /r %%f in (*.png *.jpg *.gif *.webp *.jpeg) do (
set curr_name=%%~nxf
set curr_path=%%~dpf
@echo !curr_path!!curr_name!
@echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
)
pause
對于名為!a.png和a!.png 的檔案,它列印出a.png而對于!a!.png它只列印出.png。我一直試圖為此尋找答案,但沒有運氣。對不起,如果我在這里遺漏了一些明顯的東西,并感謝您提供任何提示!
uj5u.com熱心網友回復:
啟用延遲擴展后,這是預期的行為。您顯示的用例不需要分配變數 - 您可以只使用相關的 For 變數修飾符。
如果由于某種原因您需要使用延遲擴展(例如執行子字串修改),則應在分配變數后的回圈期間打開/關閉延遲擴展:
例子:
@echo off
for /r %%f in (*.png *.jpg *.gif *.webp *.jpeg) do (
set "curr_name=%%~nxf"
set "curr_path=%%~dpf"
Setlocal enabledelayedexpansion
echo(!curr_path!!curr_name!
endlocal
@echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
)
pause
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/370621.html
上一篇:如何在懸停時顯示播放和暫停文本
