windows - 批处理脚本不回显变量的内容并且暂停不起作用
问题描述
我正在编写一个脚本,它遍历特定文件夹中的每个文件,并从中读取一些信息,并为每个文件编号。
所以我正在使用for 循环运行文件,并且工作正常。现在我添加了一个变量,该变量i
应在循环的每次迭代中递增。
我set /a i=0
在for循环中使用了set /a i+=1
and,这个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
这是一个输出示例:
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
推荐阅读
- python - 通过对字符串中的外观进行排名,对 str 和 int 的值进行排序
- windows - 如何删除子目录中目录的文件扩展名?
- python - 如何将熊猫数据框与自动键连接起来?
- php - 通过数组从空值创建默认对象
- typescript - 连接 ot Postgresql mikro-orm
- android - Android Kotlin - 在 facebook 等特定应用上分享
- vb.net - vb.net 如何获取保存在文件夹中的文本文件的名称?
- javascript - 为什么我的控制台说 data-Id 未定义?
- python - 在 1D numpy 数组中的随机位置注入随机数
- smartsheet-api - 使用 Smartsheet API 检索报告注释