windows cmd(clink)doskey,如何将当前目录复制到剪贴板,前缀为“cd”?

时间:2014-08-04 09:22:48

标签: batch-file cmd dos doskey

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

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

如何解决?或者我是否需要在单独的批处理文件中编写它?

2 个答案:

答案 0 :(得分:1)

cd变量始终"包含"同一个目录,因为它在创建宏时被评估过一次,并且此时主目录是最新的。

但是,如果转义%个字符,则会在每次调用cc时评估变量:

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

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

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

答案 1 :(得分: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