我是剧本写作新手,无法让这个作品发挥作用。如果我将文件移动到其中没有空格的路径,我就可以,但如果可以的话,我希望它能够使用该空格。
我想将一堆 Office 更新提取到包含 .cmd 文件的文件夹中。为了使批处理文件在任何计算机上都可用,我设置了一个路径变量,只需在一个地方更改该变量即可在另一台计算机上运行它。问题是路径中有空格。如果我在定义中的路径周围加上引号,cmd.exe 会在附加文件名和开关之前将它们放在路径周围,并且批处理会失败并显示“命令行语法错误”。如果没有引号,它会失败,并显示“不被识别为内部或外部命令、可操作程序或批处理文件。”
为了进行测试,我正在使用帮助开关,直到或者如果我可以让它工作。我可以使用 8.3 文件/文件夹名称(例如,我的文档为 MyDocu~1)来完成此操作,但可以用不同的方式完成吗?
尝试这样的事情:
SET MY_PATH=C:\Folder with a space
"%MY_PATH%\MyProgram.exe" /switch1 /switch2
我用
set "VAR_NAME=<String With Spaces>"
更新路径时:
set "PATH=%UTIL_DIR%;%PATH%"
这里有两个选择。首先,您可以存储不带引号的路径,稍后再引用它:
set MyPath=C:\Program Files\Foo
"%MyPath%\foo with spaces.exe" something
您可以使用的另一个选项是一个子例程,它用于不带引号的字符串(但在这种情况下,这实际上不是一个好主意,因为您添加引号,剥离它们并再次重新添加它们而没有好处):
set MyPath="C:\Program Files\Foo"
call :foo %MyPath%
goto :eof
:foo
"%~1\foo.exe"
goto :eof
%~1
删除参数两边的引号。当传递文件夹名称时,这会很方便,但正如前面所说,在这种特殊情况下,这不是最好的主意:-)
试试这个;
创建一个变量如下
SET "SolutionDir=C:\Test projects\Automation tests\bin\Debug"**
然后用变量替换路径。确保为开始和结束添加引号
vstest.console.exe "%SolutionDir%\Automation.Specs.dll"
创建 .bat 文件时,我总是将路径放在双引号中。 (我刚刚添加了暂停,所以它不会关闭屏幕。)
例如:
"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"\...)
希望这有帮助。
我最近也遇到了同样的问题,想象一下......
Folder with spaces
└ File1.txt
└ File2.txt
你是对的,如果你在路径周围添加“”...
SET RootFolder="C:\Folder with spaces"
如果您想附加文件名等,它会使其变得不可用(而不对字符串进行一些临时处理...
FOR %%F IN * DO (COPY %%F "%RootFolder%\%%F")
❌ COPY File1.txt ""C:\Folder with spaces"\File1.txt"
❌ COPY File2.txt ""C:\Folder with spaces"\File2.txt"
关键是仍然使用“”,但将它们放在整个SET语句周围(即在变量名称之前)
SET "RootFolder=C:\Folder with spaces"
当您需要重新使用变量时,这将起作用
FOR %%F IN * DO (COPY %%F "%RootFolder%\%%F")
✅ COPY File1.txt "C:\Folder with spaces\File1.txt"
✅ COPY File1.txt "C:\Folder with spaces\File2.txt"
如果需要存储永久路径(cmd重启时路径不改变)
以管理员身份运行命令提示符(右键单击cmd.exe并选择以管理员身份运行)
在cmd中
setx path "%path%;your new path"
然后输入输入path并按回车键检查路径是否正确
也可以尝试添加双斜杠 就像这个只适合我
set dir="C:\\\1. Some Folder\\\Some Other Folder\\\Just Because"
@echo on
MKDIR %dir%
天啊,发帖后他们删除了我帖子中的第二个 \,所以如果你打开我的评论,它显示三个,你应该将它们读为两个......