0

cmdを介して次のコードを実行しようとしています。

"C:\Program Files\Beyond Compare 2\BC2.exe" @"C:\New Folder\Myscript.txt" "C:\New Folder\A.txt" "C:\New Folder\B.txt"

これにより、Beyond Compare が実際に開き、2 つのテキスト ファイルが比較されます。

問題は、cmd[バージョン 6.1.7601] でこのコードを実行すると正しく実行されますが、バージョン 5.1.2600 で実行すると致命的なエラーが表示されることです:- C:/New が見つかりません。

エラーは name(New Folder) のスペースが原因であることは理解していますが、Win 7 で問題なく動作するのはなぜですか。

Myscript.txt の内容 :-

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

2 に答える 2

1

なぜ機能しないのか説明できませんが、いくつかの潜在的な解決策があります

1)ファイルの場所にある現在のディレクトリで実行します

フォルダー名にスペースがあり、すべてのファイルが同じ場所にあるため、ディレクトリをそのフォルダーに変更し、相対パスを使用するだけで、フォルダー名を回避できます。

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

もちろん、ファイルが別の場所にある場合、またはファイル名にスペースが含まれている場合 (スペースが本当に問題であると仮定すると)、これは機能しません。

2) 短い 8.3 名を使用する

短い 8.3 の名前は嫌いです。これには多くのバグが関係しているからです。しかし、それらが役立つ場合もあります。

を使用して、ファイルまたはフォルダーの短い名前を取得できますDIR /X。または、バッチ スクリプトで次を使用して、プログラムで短いパスを取得することもできます。

for %%A in ("C:\New Folder\Myscript.txt") do (
  for %%B in ("C:\New Folder\A.txt") do (
    for %%C in ("C:\New Folder\B.txt") do (
      "C:\Program Files\Beyond Compare 2\BC2.exe" @"%%~fsA" "%%~fsB" "%%~fsC"
    )
  )
)

もちろん、ボリュームで短い 8.3 名が無効になっている場合、上記は役に立ちません。

于 2014-01-27T11:26:45.713 に答える
0

Raymond のコメントを正しく理解していれば、解析は cmd ではなく Beyond Compare によって行われます。

使ってみた

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

XPでは問題なく動作しましたが、Windows 7ではエラーが表示されます.OSが異なると、Beyond Compareの動作が異なるようです。

于 2014-01-27T07:11:56.880 に答える