windows - 改变目录停止 %~dp0 工作

标签 windows batch-file command prompt

我在 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/

相关文章:

java - 在 Windows 和 Snow Leopard 机器之间使用 Java 应用程序时遇到问题

windows - 查找 .bat 文件的文件夹名称

batch-file - CMD.EXE批处理脚本显示txt文件中的最后10行

windows - 批处理文件中的通配符

java - 如何从java代码在unix终端中执行外部工具?

windows - 如何在 Windows Universal 中完成当前页面

python - 用波兰语字符加密字符串的简单方法

java - JAVA代码触发Hadoop命令

bash - 用一个空格替换 5 个点

windows - 内存相关术语的含义?