[英]Batch script does not echo contents of a variable and pause not working
我正在編寫一個腳本,它遍歷特定文件夾中的每個文件,並從中讀取一些信息,並為每個文件編號。
所以我正在使用for 循環運行文件,並且工作正常。 現在我添加了一個變量i
,它應該在循環的每次迭代中遞增。
我使用了set /ai=0
並在 for-loop set /a i+=1
內部使用了這個Set
命令確實將數字打印到控制台。 我現在的問題是set
命令打印數字,但是當我用echo %i%
回顯數字時,它總是會打印0
而不是增加的值。 我也試過echo !i!
但這根本行不通。 它只是打印!i!
在控制台中。
我還在腳本末尾添加了一個pause
命令,但它被完全忽略了。
這是我的批處理腳本:
@echo off
setlocal EnableDelayedExpansion
set /a i=0
for /r %%n in (Links\*.lnk) do (
set /a i+=1
echo.
echo [Button!i!Back]
get.bat "%%n"
)
pause
這是 output 的示例:
45
[Button!i!Back]
#@#HudIcons\VLC media player.ico
D:\Programme\VideoLAN\VLC\vlc.exe
我也剛剛意識到,循環第一次運行, !i!
確實可以正常工作並打印數字,但之后不會。
我知道我可能不應該像這樣調用另一個批處理文件,但那是暫時的。
任何想法為什么這會表現得如此奇怪?
如果沒有Set /A
遞增方法,也許對您來說會更容易,因此不需要延遲擴展。 替代方法可能涉及使用findstr.exe
來提供計數:
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
For /F "Tokens=1,* Delims=:" %%G In ('Dir /B /S /A:-D "Links\*.lnk" ^
2^> NUL ^| %SystemRoot%\System32\findstr.exe /EILN ".lnk"') Do (Echo=
Echo [Button%%GBack]
Call "get.bat" "%%H")
Pause
您使用百分比符號來調用變量%Variable%
並回顯它echo %variable%
以設置一set variable=value
希望這對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.