【发布时间】:2019-11-10 19:02:03
【问题描述】:
我有以下批处理文件可以让git diff 在 Windows 中调用电子表格比较 UI。所以我试图将 git diff 的第二个(旧文件)和第五个(新文件)参数传递给电子表格比较,以便使用 git diff 比较文件。
所以现在,这个批处理文件只能成功处理文件名中没有空格的文件,它不能处理文件名中有空格的文件。
我应该在这个脚本中添加什么代码来使这个批处理代码处理带有空格的文件:
@ECHO OFF
set path2=%5
set path2=%path2:/=\%
ECHO %2 > tmp.txt
dir %path2% /B /S >> tmp.txt
C:/"Program Files"/"Microsoft Office"/root/vfs/ProgramFilesX86/"Microsoft Office"/Office16/DCF/SPREADSHEETCOMPARE.EXE tmp.txt
它目前会抛出这样的错误:
Unhandled Exception: System.ArgumentException: Illegal characters in path. at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional) at System.IO.Path.GetFileName(String path) at ProdianceExcelCompare.Form1.StatusReady() at ProdianceExcelCompare.Form1.Init() at ProdianceExcelCompare.Form1..ctor(String instructionFile) at ProdianceExcelCompare.Program.Main(String[] args) fatal: external diff died, stopping at London comparison.xlsx
【问题讨论】:
-
当你发送参数时,那些带有毒或空格字符的参数需要双引号。在您的批处理文件中,如果您不再需要周围的双引号,您可以使用
%~5而不是%5来删除它们。此外,set 命令的推荐语法是Set "VariableName=VariableValue"。因此,我建议您在上面的脚本中使用以下内容,Set "path2=%~5",以删除周围的双引号,或者Set "path2=%5",如果您愿意保留它们。 -
标准的 Windows 路径分隔符是
\,但不是/(尽管由于一些智能自动更正,一些命令可能同时接受)!
标签: batch-file arguments filenames