批处理中出现了“文件名、目录名或卷标语法不正确”的错误。

31

当我在批处理中运行以下代码时....

set PATH='C:\Users\DEB\Downloads\10.1.1.0.4'
cd !PATH!

我遇到了错误 "文件名、目录名或卷标语法不正确"。

更新:以下是对我有效的解决方案。

  • 不要使用PATH作为变量名
  • 将其设置为"myPATH=C:\Users\DEB DAS\Downloads\10.1.1.0.4"

2
应该是 cd %PATH%,并且需要用双引号 " 而不是单引号将值括起来。但我强烈不建议您使用该变量名 - 它具有非常特殊的含义。 - user330315
2个回答

21
set myPATH="C:\Users\DEB\Downloads\10.1.1.0.4"
cd %myPATH%
  • 单引号不表示字符串,它们让其以'C:\开头而非C:\,所以

  • %name% 是扩展变量的常规语法,!name! 语法需要使用命令 setlocal ENABLEDELAYEDEXPANSION 先启用,或者通过在命令提示符下运行 CMD /V:ON 来启用。

  • 不要将PATH作为你的名称,它是一个包含所有可执行程序位置的系统名称。如果你覆盖它,你的脚本的某些部分会停止工作。如果你想要更改它,你需要执行 set PATH=%PATH%;C:\Users\DEB\Downloads\10.1.1.0.4 来保留当前的PATH内容,并在结尾添加内容。


3
+1 但是在使用了 setlocal ENABLEDELAYEDEXPANSION 后,!name! 语法可以在任何地方使用,而不仅限于循环内部。 - foxidrive
@foxidrive 可以这样做。我在命令提示符下测试过,但它没有起作用,所以我认为它不行。但是我已经在批处理文件中重新尝试了一下,在那种情况下它确实可以工作。我会更新我的帖子 - 谢谢。 - TessellatingHeckler

0
在我的情况下,如果我使用cmd来运行批处理文件,并且批处理文件的路径不正确,会显示这个错误。例如:users>E:\TEST"E:\TEST.bat 错误,users>E:\TEST.bat 是可以工作的。经过检查后,我修正了路径。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接