簡體   English   中英

批處理腳本不回顯變量的內容並且暫停不起作用

[英]Batch script does not echo contents of a variable and pause not working

我正在編寫一個腳本,它遍歷特定文件夾中的每個文件,並從中讀取一些信息,並為每個文件編號。

所以我正在使用運行文件,並且工作正常。 現在我添加了一個變量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.

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