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-我现在意识到这两个问题是不同的,所以我为您所解决的问题发布了一个不同的问题。如果你把答案贴在那里,我会接受的。谢谢您!: