Windows XCOPY は FIND コマンドから結果を返します

Windows XCOPY は FIND コマンドから結果を返します

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\

上記のコマンドには複数のエラーがあります。

  1. |次を使用して特殊文字をエスケープする必要があります^:

    ^|
    
  2. dir /b | findstr "TENDER_NUM 2"一重引用符で囲む必要があります':

    'dir /b ^| findstr "TENDER_NUM 2"'
    
  3. 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の場合- ファイルをループします (サブフォルダーを再帰的に実行します)。
  • 構文- 文字、区切り文字、引用符をエスケープします。

関連情報