1

可以在命令行中执行此操作:

C:\Users\ken.chen>echo|set /p=cd %cd%|clip

C:\Users\ken.chen>cd C:\Users\ken.chen

C:\Users\ken.chen\nuts\notes>echo|set /p=cd %cd%|clip

C:\Users\ken.chen\nuts\notes>cd C:\Users\ken.chen\nuts\notes

但是如果我将 doskey cc 添加到我的初始化批处理文件中,变量 %cd% 始终是我的主目录:

doskey cc=echo^|set /p=cd %cd%^|clip


C:\Users\ken.chen\nuts\notes>cc

C:\Users\ken.chen\nuts\notes>cd C:\Users\ken.chen

如何解决?还是我需要将它写在一个单独的批处理文件中?

4

2 回答 2

1

cd变量始终“包含”相同的目录,因为它在创建宏时被评估过一次,并且此时主目录是当前目录。

但是,如果您对%字符进行转义,则将在每次调用 时评估该变量cc

doskey cc=echo^|set /p=cd ^%cd^%^|clip

但是这种转义的方法%只能在命令行中使用。要在批处理文件中转义它们,请使用不同的方法:

doskey cc=echo^|set /p=cd %%cd%%^|clip
于 2014-08-06T06:08:36.060 回答
0

你不能简单地使用下面的吗?

echo.cd "%cd%" | clip

替代方法——

如果你的路径不包含任何空间,你可以用一个衬垫来做 -

for /f "tokens=3" %%i in ('dir ^|findstr /i /c:"directory of"') do (echo.cd "%%i"| clip)

如果它包含任何空格 -

for /f "delims=" %%i in ('dir ^| findstr /i /c:"Directory of"') do set mypath=%%i
set mypath=%mypath: Directory of =%
echo.cd "%mypath%"| clip

干杯,G

于 2014-08-04T10:11:20.563 回答