Win7和XP上CMD的不同行为



我试图通过CMD运行代码

"C:Program FilesBeyond Compare 2BC2.exe" @"C:New FolderMyscript.txt" "C:New FolderA.txt" "C:New FolderB.txt"

这实际上将在比较和比较两个文本文件之外打开。

问题是,当我在CMD [版本6.1.7601]上运行此代码时,它运行正确,但是当我在版本5.1.2600上运行它时,它显示出致命的错误: - 找不到C:/new。/p>

我知道错误是由于名称中的空间(新文件夹)引起的,但是为什么在Win 7上运行正常。

myScript.txt的内容: -

file-report layout:side-by-side &
options:display-all &
output-to:%3 output-options:html-color,wrap-word %1 %2

我无法解释为什么它不起作用,但是我有一些潜在的解决方案

1)在文件位置与当前目录一起运行

由于该空间位于文件夹名称中,并且所有文件都位于同一位置,因此您可以通过简单地将目录更改为该文件夹并使用相对路径来避免使用文件夹名称。

pushd "c:new folder"
"C:Program FilesBeyond Compare 2BC2.exe" @Myscript.txt A.txt B.txt

当然,如果您的文件在不同的位置,或者文件名称空格(假设空格确实是问题)

2)使用简短的8.3名称

我讨厌简短的8.3名称,因为与它们相关的许多错误。但是有时它们会很有用。

您可以使用DIR /X获取文件或文件夹的简短名称。或者,您可以在批处理脚本中使用以下内容来编程以获取短路。

for %%A in ("C:New FolderMyscript.txt") do (
  for %%B in ("C:New FolderA.txt") do (
    for %%C in ("C:New FolderB.txt") do (
      "C:Program FilesBeyond Compare 2BC2.exe" @"%%~fsA" "%%~fsB" "%%~fsC"
    )
  )
)

当然,如果在您的卷上禁用了简短的8.3名,上面将不会有任何好处。

如果我正确地理解了雷蒙德的评论,解析是通过比较而不是cmd完成的。

我尝试使用

file-report layout:side-by-side &
options:display-all &
output-to:"%3" output-options:html-color,wrap-word "%1" "%2"

它在XP上效果很好,但在Windows 7上显示错误。对于不同的OS而言,"超级比较"的行为不同。

最新更新