如何将名称中带有space的文件传递给命令FC?

How to pass a file with space in the name to command FC?

我有一个包含命令 FC 的 diff 脚本,所以我只需要将两个文件放在上面:

FC /L /N "%1" "%2" > diff.out.txt 2> diff.err.txt

它工作正常,但如果其中一个文件的名称中有空格... 例如,我的文件路径是 C:\Users\joH1\Desktop\file_with a_space.txtC:\Users\joH1\Desktop\file_2.txt,我收到错误(抱歉本地化):

FC : commutateur non valide

FC : impossible d'ouvrir C:\USERS\JOH1\DESKTOP\FILE_WITH - Ce fichier ou dossier n'existe pas

因此,文件名被拆分为两个单独的参数,即使路径被引用

为了找出它的来源,我在脚本中添加了以下行:

echo %1
echo %2
FC /L /N "%1" "%2" > diff.out.txt 2> diff.err.txt
pause

我得到 echos 的正确输出(尽管 args 没有被引用!):

"C:\Users\joH1\Desktop\file_with a_space.txt"
"C:\Users\joH1\Desktop\file_2.txt"

我什至尝试使用 dir 来确保 echo 没有合并回拆分的参数,我得到了正确的结果(文件被识别并列出 => 名称未拆分)。

所以;我想 FC 是罪魁祸首。

有没有办法告诉它拆分文件名? (像引号一样?)
我想要一种与拖放兼容的方式,而不是 重命名不带空格的文件,如果可能...

提前致谢!

FC /L /N "%~1" "%~2" > diff.out.txt 2> diff.err.txt

应该阅读您的文件。我假设您的参数只是用双引号引起来,并且它们不包含发布的 `