Batch file 使用EnableDelayedExpansion时的变量问题

Batch file 使用EnableDelayedExpansion时的变量问题,batch-file,Batch File,我的批处理文件有两个问题,我认为它们是由于启用延迟扩展造成的 我把我的剧本改编成电影 我需要为脚本的另一部分启用延迟扩展,所以我需要保留它 这是我的剧本: @echo off set myPath=Subfolder1 set folderList=input.txt set originalPath=%~dp0 cd %myPath% setlocal EnableDelayedExpansion :process for /F "tokens=*" %%S in (%~dp0\%f

我的批处理文件有两个问题,我认为它们是由于
启用延迟扩展
造成的

我把我的剧本改编成电影

我需要为脚本的另一部分启用延迟扩展,所以我需要保留它

这是我的剧本:

@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%

我做错了什么?使用/设置测试路径的正确方法是什么


要批量使用延迟扩展,您需要安装零件

首先,您必须使用
setlocal EnableDelayedExpansion
启用它
然后可以用感叹号而不是百分号展开任何变量

setlocal EnableDelayedExpansion
set var=origin
(
  set var=New Value
  echo Percent: %var%
  echo delayed: !var!
)
输出是

百分比:来源
延迟:新值

解析命令或块时计算扩展百分比。

执行命令时会计算延迟扩展。

请使用
尝试!测试路径
使用
pushd%myPath%
临时更改工作目录,使用
popd
恢复原始目录时,不需要将工作目录存储在变量中…@jeb-这很有效!这是使用变量的另一种方法吗?@Dzyann这就是使用延迟扩展的意义,感叹号扩展i由
seltlocal EnableDelayedExpansion启用
另请参见
set/?
@aschipfl-我现在意识到这两个问题是不同的,所以我为您所解决的问题发布了一个不同的问题。如果你把答案贴在那里,我会接受的。谢谢您!: