在 Windows .cmd 文件或批处理文件的路径中设置带有空格的路径变量

     2023-02-16     17

关键词:

【中文标题】在 Windows .cmd 文件或批处理文件的路径中设置带有空格的路径变量【英文标题】:Set a path variable with spaces in the path in a Windows .cmd file or batch file 【发布时间】:2010-12-23 11:42:49 【问题描述】:

我是脚本编写新手,无法让这个脚本工作。如果我将文件移动到其中没有空格的路径,我可以,但如果可以的话,我希望它与空间一起工作。

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

为了进行测试,我一直在使用帮助开关,直到或者如果我可以让它工作。我可以使用 8.3 文件/文件夹名称(例如 My Documents as MyDocu~1),但可以用不同的方式完成吗?

【问题讨论】:

引号必须包含带有文件名的路径,并且必须跟随命令行参数。您能否提供有关如何创建命令行的更多详细信息?你的意思是什么 【参考方案1】:

试试这样的:

SET MY_PATH=C:\Folder with a space

"%MY_PATH%\MyProgram.exe" /switch1 /switch2

【讨论】:

这就是我在记事本中使用 Replace 所做的。谢谢。 很高兴它有帮助。如果您投票并接受您认为对您有帮助的任何答案,那就太好了。【参考方案2】:

我用

set "VAR_NAME=<String With Spaces>"

更新路径时:

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

【讨论】:

这应该是公认的答案。出于某种原因,如果值有空格且未加引号,则从 if 块调用 set 不起作用。【参考方案3】:

这里有两个选项。首先,您可以存储不带引号的路径,然后再引用它:

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 LALA=%~1对我有用。 第二种方法在你使用 subrutines 时效果很好【参考方案4】:

试试这个;

    如下创建一个变量

    SET "SolutionDir=C:\Test projects\Automation tests\bin\Debug"**
    

    然后用变量替换路径。确保为开始和结束添加引号

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

【讨论】:

【参考方案5】:

在创建 .bat 文件时,我总是将路径放在双引号中。 (我只是添加了暂停,所以它不会关闭屏幕。)

例如:

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

【讨论】:

【参考方案6】:

正确的做法是这样的:

@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

【讨论】:

【参考方案7】:

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

(cd\New Folder\...) --&gt; (cd\"New Folder"\...)

希望这会有所帮助。

【讨论】:

【参考方案8】:

如果需要存储永久路径(重启cmd时路径不改变)

    以管理员身份运行命令提示符(右键单击 cmd.exe 并选择以管理员身份运行)

    在 cmd 中 setx path "%path%;your new path" 然后输入

    输入path并回车检查路径是否正确

【讨论】:

我认为,问题不在于 PATH 变量,而在于 a path 变量。 OP 显然希望将特定路径存储到变量中并在批处理脚本中使用该值。【参考方案9】:

我最近也遇到了同样的问题,想象一下......

Folder
  └  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语句周围(即BEFORE变量名)

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"

【讨论】:

【参考方案10】:

也可以尝试添加双斜杠 像这样只对我有用

set dir="C:\\1.Some Folder\\Some Other Folder\\只是因为"

@echo on MKDIR %dir%

OMG 在发布后他们删除了我帖子中的第二个\,所以如果你打开我的评论并显示三个,你应该把它们读成两个......

【讨论】:

windows的cmd命令

...您的浏览器不支持HTML5视频zymedia(\'video\')参考技术AIF执行批处理程序中的条件性处理。LABEL创建、更改或删除磁盘的卷标。MD创建目录。MKDIR创建目录。MODE配置系统设备。MORE一次显示一个结果屏幕。MOVE将文件从一个目录移到另一... 查看详情

Windows 批处理文件:.bat 与 .cmd?

】Windows批处理文件:.bat与.cmd?【英文标题】:Windowsbatchfiles:.batvs.cmd?【发布时间】:2010-09-1400:29:05【问题描述】:据我了解,.bat是旧的16位命名约定,.cmd用于32位Windows,即以NT开头。但是我继续在各处看到.bat文件,并且使用任... 查看详情

windows批处理

概念:  批处理是dos或者Windows系统中的一种简单的程序,大小写不敏感(命令符忽略大小写),可以用if和goto来控制流程,也可以使用for循环。  批处理的文件扩展名为.bat或.cmd,文件的每一行都是一条DOS命令,可以使用任何... 查看详情

Windows CMD 批处理脚本 FFmpeg

】WindowsCMD批处理脚本FFmpeg【英文标题】:WindowsCMDBatchScriptFFmpeg【发布时间】:2021-05-3019:44:03【问题描述】:我创建了一个批处理文件(.bat),它使用FFmpeg将各种视频(带有*.mov或*.mp4文件扩展名)从输入文件夹转码到输出文件夹(... 查看详情

如何用批处理打开文件

.../网络>>操作系统/系统故障问题描述:在WINDOWS下如何用批处理打开文件还有批处理具体有什么作用解析:批处理是为BAT或CMD扩展名的文件.以文本档案的格式进行编辑,写完后保存为BAT或CMD扩展名譬如:你想打开注册表编辑器,首先... 查看详情

"cscript"不是内部或外部命令,也不是可运行的程序或批处理文件,怎么解决啊

...uot;cscript"不是内部或外部命令,也不是可运行的程序或批处理文件",不知道怎么办啊,我的输入都是正确的啊批处理中的“内部命令”是指包含在cmd.exe中的命令,就是cmd.exe这个批处理解释器内部包含的命令。而“外部命令... 查看详情

cmd命令

...。CACLS显示或修改文件的访问控制列表(ACL)。CALL从另一个批处理程序调用这一个。CD显示当前目录的名称或将其更改。CHCP显示或设置活动代码页数。CHDIR显示当前目录的名称或将其更改。CHKDSK检查磁盘并显示状态报告。CHKNTFS显示... 查看详情

windows批处理脚本怎么执行

批处理文件一般保存为.cmd或.bat文件,您可以双击执行或在cmd中使用cd命令切换到当前文件夹中,输入批处理的完整文件名,注意,一定要有后缀,就可以执行参考技术A批处理脚本一般保存为bat格式,双击就可以执行。 查看详情

windows764bit下mvn命令后提示‘cmd’不是内部或外部命令,也不是可执行程序或批处理文件

首先,开命令提示符,输入如下命令试试echo%M2_HOME%回车如果显示的路径和安装路径一致说明配置没问题;那么出现这个问题的原因可能就是路径问题,可能是你安装了某个软件更改了系统映射路径导致的。相应的解决办法是:往P... 查看详情

Windows 批处理文件:多个 if 条件

】Windows批处理文件:多个if条件【英文标题】:Windowsbatchfiles:multipleifconditions【发布时间】:2011-08-2822:30:42【问题描述】:有什么办法可以说如果%1==1或%1==2在批处理文件中?或者,更好的是,如果我可以指定一组候选值,例如如... 查看详情

从另一个或从提示符调用 Windows 批处理文件的几种方法。哪种情况下?

】从另一个或从提示符调用Windows批处理文件的几种方法。哪种情况下?【英文标题】:Severalwaystocallawindowsbatchfilefromanotheroneorfromprompt.Whichoneinwhichcase?【发布时间】:2011-02-0603:54:33【问题描述】:可以从另一个批处理文件(caller.b... 查看详情

如何在 Windows 中为可以锁定(只读)和解锁驱动器的 diskpart cmd 创建批处理文件

...Windows中为可以锁定(只读)和解锁驱动器的diskpartcmd创建批处理文件【英文标题】:howtocreatebatchfilefordiskpartcmdinwindowswhichcanlock(readonly)andunlockthedrive【发布时间】:2016-09-0209:53:20【问题描述】:我正在尝试创建批处理文件来打开/... 查看详情

cmd命令怎么使用呀!

...总是提示为:不是内部或外部命令,也不是可运行的程序或批处理文件,为什么会这样呀,谁能给我详细说明吗?兄弟在此谢谢各位了!解析:CMD命令大全关某个命令的详细信息,请键入HELP命令名XP.CMD命令大全有关某个命令的详细信息,... 查看详情

在 Windows 中,以这样的方式杀死批处理文件,使其子文件也被杀死

】在Windows中,以这样的方式杀死批处理文件,使其子文件也被杀死【英文标题】:Killbatchfileinsuchawaythatitschildrenarekilledtoo,inWindows【发布时间】:2014-01-2010:35:28【问题描述】:我需要从cmd启动exe(包装exe,以便我可以提供一些命... 查看详情

如果...或如果...在 Windows 批处理文件中

】如果...或如果...在Windows批处理文件中【英文标题】:IF...ORIF...inawindowsbatchfile【发布时间】:2012-01-1608:00:14【问题描述】:有没有办法在Windows批处理文件中编写IFORIF条件语句?例如:IF[%var%]==[1]ORIF[%var%]==[2]ECHOTRUE【问题讨论】... 查看详情

windows批处理(cmd/bat)常用命令教程(代码片段)

Windows批处理(cmd/bat)常用命令教程简单详细,建议收藏前言批处理文件(batchfile)包含一系列DOS命令,通常用于自动执行重复性任务。用户只需双击批处理文件便可执行任务,而无需重复输入相同指令。编写批处理文件非常简单... 查看详情

windows下批处理文件(.bat)的使用

批处理(Batch),就是进行批量的处理。英文译文BATCH,批处理文件后缀BAT就取的前三个字母,通常被觉得是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件是扩展名为.bat或.cmd的文本文件,包括一条或多条命令,由DO... 查看详情

通过批处理文件运行 PowerShell [System.windows.forms.messagebox] 而不显示 cmd 窗口

】通过批处理文件运行PowerShell[System.windows.forms.messagebox]而不显示cmd窗口【英文标题】:RunPowerShell[System.windows.forms.messagebox]throughaBatchfilewithoutcmdwindowshowing【发布时间】:2020-05-2218:31:06【问题描述】:我正在尝试创建一个自动化流... 查看详情