Windows 7 コマンド
次のコマンドでファイルのリストを取得できますdir /b | find "TENDER_NUM 2"
。find によって返されたすべてのファイルを別のフォルダーにコピーしようとしています。
私はもう試した:
for /r %x in (dir /b | findstr "TENDER_NUM 2") do copy "%x" dir_to_copy\
それはうまくいきませんでした。
編集1: エラーメッセージunexpected |
には と表示されていますが、これはdir/b | Findstr
編集2: はい、dir_to_copy\ は存在します
答え1
エラーメッセージは予期しないものです|
for /r %x in (dir /b | findstr "TENDER_NUM 2") do copy "%x" dir_to_copy\
上記のコマンドには複数のエラーがあります。
|
次を使用して特殊文字をエスケープする必要があります^
:^|
dir /b | findstr "TENDER_NUM 2"
一重引用符で囲む必要があります'
:'dir /b ^| findstr "TENDER_NUM 2"'
for /f
の代わりに以下を使用する必要がありますfor /r
:/fの場合-別のコマンドの結果に対してコマンドをループする。
/rの場合- ファイルをループします (サブフォルダーを再帰的に実行します)。
シェルから次のコマンドを使用しますcmd
。
for /f %x in ('dir /b ^| findstr "TENDER_NUM 2"') do copy "%x" dir_to_copy\
バッチファイルの場合(%
に置き換えます%%
):
for /f %%x in ('dir /b ^| findstr "TENDER_NUM 2"') do copy "%%x" dir_to_copy\
参考文献
- Windows CMD コマンドラインの AZ インデックス- Windows コマンド ラインに関連するあらゆることに関する優れたリファレンス。
- /fの場合- 別のコマンドの結果に対してコマンドをループします。
- /rの場合- ファイルをループします (サブフォルダーを再帰的に実行します)。
- 構文- 文字、区切り文字、引用符をエスケープします。