5

Windows のスクリプト (.cmd ファイル) に次のコマンドがあります。

CALL mv *.exe foo.exe

ワイルドカード文字は、ワイルドカードとしてまったく解釈されないようです。これは、スクリプトが実行されると、名前*.exe(文字通り *.exe) のファイルが見つからないというエラーがスローされるためです。ちなみに、現在のディレクトリには.exeファイルがあります。

では、このコマンドをどのように書き直せばよいでしょうか。ありがとう

4

2 に答える 2

2

利用可能な場合mvは、おそらくあなたが持っているsh.exebash.exe近くにいます。それなら簡単です:

sh.exe -c "mv *.exe foo.exe"

CMDインタープリターは、UNIXシェルとは異なり、ワイルドカードを展開しません。コマンド自体がワイルドカードを展開します(または展開しません)。組み込みrenコマンドでワイルドカードが拡張される可能性がありますが、よくわかりません。

于 2013-01-04T18:38:49.847 に答える
2

Windows では、別のバッチ スクリプトを呼び出さない限り、'call' を使用する必要はありません。また、代わりに「move」コマンドを使用することもできます。これにより、Windows で * が正しく補間されます。

たとえば、次のようなスクリプトを使用する場合:

move *.exe foo.exe

その中で、次のような結果が得られます。

C:\dev\example>dir /B
a.exe
mymove.cmd

C:\dev\example>mymove

C:\dev\example>move *.exe foo.exe
C:\dev\example\a.exe
        1 file(s) moved.

C:\dev\example>dir /B
foo.exe
mymove.cmd

C:\dev\example>

あなたが探している動作を正確に与えます!

于 2013-01-04T18:52:10.720 に答える