使用EnableDelayedExpansion时的变量问题

时间:2015-11-01 21:24:32

标签: batch-file

我的批处理文件存在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.

1 个答案:

答案 0 :(得分:1)

要批量使用延迟扩展,您需要部件。

首先,您必须使用setlocal EnableDelayedExpansion set var=origin ( set var=New Value echo Percent: %var% echo delayed: !var! ) 启用它 然后,您可以使用感叹号而不是百分号来扩展任何变量。

{{1}}

输出

  

百分比:原产地   延迟:新价值

解析命令或块时评估百分比扩展 执行命令时会评估延迟扩展。