【发布时间】:2020-05-19 11:29:22
【问题描述】:
我在批处理脚本中使用 MediaInfo CLI,但我不知道问题出在哪里,但如果我使用包含空格的文件夹路径,我无法让此命令工作。我对批处理脚本并不陌生,多年来已经创建了数百个脚本。通常我会认为使用双引号可以解决问题,但我知道这与使用“for /f”命令和使用双引号传递多个参数有关。我已经尝试了我能想到的一切,但如果我使用带空格的路径,仍然无法让它工作。没有空格就可以正常工作,只是没有空格。
请注意,这不是完整的批处理脚本,只是违规代码的 sn-p。我还将双“%%”变量更改为单“%”,以便在命令行上进行测试。
另外,在我的批处理脚本中,我不是使用“echo”而是输出到一个变量,这就是为什么我必须使用“for”命令。所有这些都与这个特定问题无关。
工作示例
for /f %g in ('C:\MediaInfo.exe "--Inform=General;%MenuCount%" "D:\Some Folder\filename.mkv"') do echo %g
.
for /f "usebackq delims=" %g in (`C:\MediaInfo.exe "--Inform=General;%MenuCount%" "D:\Some Folder\filename.mkv"`) do echo %g
.
无效示例
for /f %g in ('"C:\folder with spaces\MediaInfo.exe" "--Inform=General;%MenuCount%" "D:\Some Folder\filename.mkv"') do echo %g
.
for /f "usebackq delims=" %g in (`C:\folder with spaces\MediaInfo.exe "--Inform=General;%MenuCount%" "D:\Some Folder\filename.mkv"`) do echo %g
两个“NOT WORKING”命令导致相同的错误...
'C:\folder' 未被识别为内部或外部命令, 可运行的程序或批处理文件。
【问题讨论】:
-
for /f "USEBACKQ Tokens=* delims=" %g in ('"C:\folder with spaces\MediaInfo.exe" "--Inform=General;%MenuCount%" "D:\Some Folder\filename.mkv"') do echo %g或for /f "USEBACKQ delims=" %g in ('"C:\folder with spaces\MediaInfo.exe" "--Inform=General;%MenuCount%" "D:\Some Folder\filename.mkv"') do echo %g -
请注意使用 ' 而不是 `,在这种情况下,它是用于包含命令的集合。
-
@T3RR0R,使用
usebackq和'让in之后的部分被解释为文字字符串,但不是要执行的命令;您将需要 ` 代替。无论如何,这对手头的情况没有帮助...... -
可能你误会了,我指的是`启用命令。
标签: windows for-loop batch-file double-quotes multiple-arguments