Re smileseeker:
%%~npb 中的 n 是必要的,否则就会替换成上一级目录的路径,而且就现在的使用状况来看,表示扩展名的 x 也是需要的,如 %%~pnxb ,否则就会无法正确替换名字中包含句点的目录。
Re chenhui530:
兄的方案可以略作更新:
for %%p in (%cd%) do set _retcmd=%%~dp ^&^& cd %%~pnxp
::你切换盘符和路径后运行的代码
:: ...
%_retcmd%
set _retcmd=
::你需要返回源路径的代码
当然,更简单的方法是直接保存原来的当前路径,在想返回时用 cd /d 这个命令即可。
set _oldpath=%cd%
::你切换盘符和路径后运行的代码
:: ...
cd /d %_oldpath%
::你需要返回源路径的代码
需要注明的是,上述方法仅适用于 NT CMD 环境,在 MSDOS6/7 和 Win9x 命令行都是无效的。而在 NT CMD 环境下,使用 tigerpower 兄提到的 pushd/popd 是最简单实用的方案,上述的方案只是在某些特殊情况下才会使用到。另外,在MSDOS 和Win9x 命令行环境下,也早已出现许多类似 pushd/popd 功能的第三方支持工具,如果找不到这些工具,那可以参考2楼链接中我所写的程序,其中利用了内部命令 prompt 。
Last edited by willsort on 2005-10-30 at 15:14 ]