批处理使用enabledelayedexpansion 之后pushd与popd不能正常工作
@echooffsetbinDir=%~dp0pushd%binDir%cd..\lib\setlocalenabledelayedexpansionpopd记录当前目录...
@echo off
set binDir=%~dp0
pushd %binDir%
cd ..\lib\
setlocal enabledelayedexpansion
popd
记录当前目录,然后进入父母的lib目录下,然后启用变量延迟,恢复到记录的目录。中间使用setlocal enabledelayedexpansion就不能正常运行,没报错。求高手指教 展开
set binDir=%~dp0
pushd %binDir%
cd ..\lib\
setlocal enabledelayedexpansion
popd
记录当前目录,然后进入父母的lib目录下,然后启用变量延迟,恢复到记录的目录。中间使用setlocal enabledelayedexpansion就不能正常运行,没报错。求高手指教 展开
展开全部
用个变量保存旧的路径然后恢复不行吗,比如 "set olddir=%cd%"
setlocal 定义一个环境变量区域,在这个区域popd就找不到pushd保存的环境变量,也就不能正确恢复目录,为每个setlocal加一个对应的endlocal命令就会恢复到原先的环境变量设置,像这样
pushd %binDir%
cd ..\lib\
setlocal enabledelayedexpansion
需要使用变量延迟的命令
endlocal
popd
setlocal有对应的endlocal,这样popd就能恢复pushd保存的目录了
setlocal 定义一个环境变量区域,在这个区域popd就找不到pushd保存的环境变量,也就不能正确恢复目录,为每个setlocal加一个对应的endlocal命令就会恢复到原先的环境变量设置,像这样
pushd %binDir%
cd ..\lib\
setlocal enabledelayedexpansion
需要使用变量延迟的命令
endlocal
popd
setlocal有对应的endlocal,这样popd就能恢复pushd保存的目录了
展开全部
setlocal 表示之后设置本地化状态,如命令附有enabledelayedexpansion表示同时使用变量延迟扩展状态生效,(!符随即成为变量取值符),不过之前的变量设置以及当前路径会继承(与另一网友说的不同),,当遇到endlocal (结束本地化)命令后,这期间的涉及变量赋值或当前路径的改变将失效,恢复到setlocal之前的状况
我估计有一定基础的话应该容易理解,所述不能正常运行,可能当前路径不对也可能变量赋值情况与预计不符,如仍找不到原因请把代码贴全
我估计有一定基础的话应该容易理解,所述不能正常运行,可能当前路径不对也可能变量赋值情况与预计不符,如仍找不到原因请把代码贴全
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询