我的批处理文件存在2个问题,我认为它们归于EnableDelayedExpansion
。
我的帖子基于this post from SO。
我的脚本的另一部分需要EnableDelayedExpansion
,所以我需要保留它。
这是我的剧本:
@echo off
set myPath=Subfolder1
set folderList=input.txt
set originalPath=%~dp0
cd %myPath%
setlocal EnableDelayedExpansion
:process
for /F "tokens=*" %%S in (%~dp0\%folderList%) do (
echo Folder %%S
REM echo Folder %%S prints: Folder folderName
set testPath=C:\BatchTests\%%S\
echo test path: %testPath%
REM echo test path: %testPath% prints: test path:
)
echo %originalPath%
REM echo %originalPath% prints: C:\BatchTests\
cd %originalPath%
pause
testPath
似乎总是空的,而行cd %originalPath%
。
我做错了什么?使用/设置testPath
的正确方法是什么?
The second issue I am having is different, so I opened a separate question here.
答案 0 :(得分:1)
要批量使用延迟扩展,您需要部件。
首先,您必须使用setlocal EnableDelayedExpansion
set var=origin
(
set var=New Value
echo Percent: %var%
echo delayed: !var!
)
启用它
然后,您可以使用感叹号而不是百分号来扩展任何变量。
{{1}}
输出
百分比:原产地 延迟:新价值
解析命令或块时评估百分比扩展 执行命令时会评估延迟扩展。