我在 C:\
驱动器上有两个批处理文件,我正在使用 %~dp0
命令使用第一个脚本的路径复制第二个批处理脚本:
COPY %~dp0"Hello World.BAT" C:\"Hello World.bak"
在脚本的早期,我需要更改到 C:\
根目录之外的子目录,但这会阻止上面的复制命令工作,我得到的错误是“文件不能成立”。如果我留在 C:\
的根目录中,则复制命令可以完美运行。任何想法为什么会这样。
最佳答案
解决此问题的另一种方法是将 %~dp0 保存在脚本开头的另一个变量中。
@echo off
setlocal
set filepath=%~dp0
.
.
some code
.
.
cd away from original path
.
.
COPY "%filepath%Hello World.BAT" "C:\Hello World.bak"
那应该有效。
我很想认为它不起作用的原因与您的报价有关。
你有这个:
COPY %~dp0"Hello World.BAT" C:\"Hello World.bak"
将其替换为:
COPY "%~dp0Hello World.BAT" "C:\Hello World.bak"
您需要将整个路径用引号引起来,以确保它能正常工作。如果你有:
C:\Program Files\Somefolder\
作为您的路径并使用引号,结果将如下所示:
"C:\Program Files\Somefolder\""Hello World.bak"
它不会起作用。
关于windows - 改变目录停止 %~dp0 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10029628/