Windows のスクリプト (.cmd ファイル) に次のコマンドがあります。
CALL mv *.exe foo.exe
ワイルドカード文字は、ワイルドカードとしてまったく解釈されないようです。これは、スクリプトが実行されると、名前*.exe
(文字通り *.exe) のファイルが見つからないというエラーがスローされるためです。ちなみに、現在のディレクトリには.exeファイルがあります。
では、このコマンドをどのように書き直せばよいでしょうか。ありがとう
利用可能な場合mv
は、おそらくあなたが持っているsh.exe
かbash.exe
近くにいます。それなら簡単です:
sh.exe -c "mv *.exe foo.exe"
CMDインタープリターは、UNIXシェルとは異なり、ワイルドカードを展開しません。コマンド自体がワイルドカードを展開します(または展開しません)。組み込みren
コマンドでワイルドカードが拡張される可能性がありますが、よくわかりません。
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>
あなたが探している動作を正確に与えます!