在Windows.cmd文件或batch file中的path中使用空格设置pathvariables

我是新手脚本写作,不能让这个工作。 我可以,如果我把文件移动到一个没有空间的path,但我希望它可以与空间一起工作。

我想将一堆Office更新提取到.cmd文件的文件夹中。 为了使batch file可以在任何计算机上使用,我设置了一个pathvariables,我只需要在一个地方更改它就可以在另一台机器上运行。 问题是path中有一个空间。 如果我在定义的path中加上引号,则cmd.exe会在它附加文件名和开关之前将它们放在path中,并且批处理失败,并显示“命令行语法错误”。 如果没有引号,则失败,“不被识别为内部或外部命令,可操作程序或batch file”。

为了testing,我正在使用帮助开关,直到或者如果我能得到它的工作。 我可以使用8.3文件/文件夹名称(例如我的文档MyDocu〜1)来做到这一点,但它可以做一个不同的方式吗?

尝试这样的事情:

SET MY_PATH=C:\Folder with a space "%MY_PATH%\MyProgram.exe" /switch1 /switch2 

我用

 set "VAR_NAME=<String With Spaces>" 

更新path时:

 set "PATH=%UTIL_DIR%;%PATH%" 

这里有两个选项。 首先,您可以将path存储起来,稍后再引用它:

 set MyPath=C:\Program Files\Foo "%MyPath%\foo with spaces.exe" something 

你可以使用的另一个选项是一个子程序,它可以用来取消引用string(但在这种情况下,因为你正在添加引号,剥离它们并重新添加它们而没有任何好处),这实际上不是一个好主意:

 set MyPath="C:\Program Files\Foo" call :foo %MyPath% goto :eof :foo "%~1\foo.exe" goto :eof 

%~1删除参数周围的引号。 这在传递文件夹名称时很方便,但如前所述,在这种情况下,这不是最好的主意:-)

尝试这个;

  1. 创build一个variables如下

     SET "SolutionDir=C:\Test projects\Automation tests\bin\Debug"** 
  2. 然后用variablesreplacepath。 确保为开始和结束添加引号

     vstest.console.exe "%SolutionDir%\Automation.Specs.dll" 

当我创build一个.bat文件时,我总是把path放在双引号中。 (我只是添加了暂停,所以它不会closures屏幕。)

例如:

 "C:\Program Files\PageTech\PCLReader64_131\PCLReader64.exe" PAUSE 

正确的做法是这样的:

 @ECHO off SET MY_PATH=M:\Dir\^ With Spaces\Sub Folder^ \Dir\Folder :: calls M:\Dir\With Spaces\Sub Folder\Dir\Folder\hello.bat CALL "%MY_PATH%\hello.bat" pause 

解决此问题最简单的方法是将文件夹名称放在引号中:

(cd\New Folder\...) --> (cd\"New Folder"\...)

希望这有助于。

如果您需要存储永久path(cmd重新启动时path不会更改)

  1. 以pipe理员身份运行命令提示符(右键单击cmd.exe并select以pipe理员身份运行)

  2. 在cmd的setx path "%path%;your new path"然后input

  3. 通过键入path并按回车来检查path是否正确