【发布时间】:2018-10-15 12:01:03
【问题描述】:
好的。我摆脱了大部分无用的代码,并一直在修补它,试图找出问题所在,我想我终于找到了:
Windows 的 Batch 无法编辑将在 FOR 循环内扩展的变量。
例如:
set /a x=1
Powershell Get-Clipboard> %temp%\ffmpeglist.txt
setlocal enableExtensions enableDelayedExpansion
for /F "delims=| tokens=*" %%A in (%temp%\ffmpeglist.txt) do (
set input[!x!]=%%A
call echo !input[%x%]!
set /a x += 1
)
endlocal
预期行为:
g:\videos\youtube1.mp4
g:\videos\youtube2.mp4
g:\videos\youtube3.mp4
g:\videos\youtube4.mp4
g:\videos\youtube5.mp4
我得到了什么:
g:\videos\youtube1.mp4
g:\videos\youtube1.mp4
g:\videos\youtube1.mp4
g:\videos\youtube1.mp4
g:\videos\youtube1.mp4
无论我做什么,set /a x+= 1 都不会改变x 的值。
有解决办法吗?我对任何事情都持开放态度。
【问题讨论】:
-
这就是你手头的所有代码吗?您可能遇到了扩展延迟问题。
-
我将编辑整个代码。
-
我不敢相信。延迟扩展在 FOR 循环中不起作用...谢谢@SteveFest
-
延迟扩展适用于 for 循环,但不适用于 for 循环中的所有地方。
-
您不需要到处延迟扩展,只需将其设置为您需要的区域并禁用您不需要的区域。
标签: arrays windows batch-file cmd ffmpeg