入門講義【第15章】 いろんなフォルダからファイルを集める
節:ファイルを集めるバッチファイルを作る複数のファイルを集める より
bat
1@echo off 2 3dir /b /s メモ_*.txt > list.txt 4 5for /f %%a in (list.txt) do ( 6 copy "%%a" .\collection\ 7)
--- 節:複数のファイルを集める より > ```bat > @echo off > > for /f %%A in ('dir /b /s メモ_*.txt') do ( > copy "%%A" ./collection/ > ) > ``` > 「for」コマンドの「in( )」の括弧内に直接「dir」コマンドを書いた形です。このときdir文をシングルクォーテーション「’」で囲むのを忘れないようにしましょう。(**※ダブルクォーテーション「”」ではエラーになります。**) **PATHのスラッシュの向きがおかしい気がしますがそれはさておき…** ### Q. 0. 何故一例目では不要だったシングルクォーテーションがfor文では必要なのですか? ()で括られているにも関わらず別のコマンドが行頭にあると~~別の~~**dir**コマンド以下が一括りであるとみなされないのですか? 0. スペースを含むものを括るならダブルクォーテーション、というざっくりした理解ですが、 この場合何故シングルクォーテーションなのですか? ### 解決後記、ご回答ありがとうございます まとめ 一般に、スペースを含む文字列をコマンドの1つの引数として使う→ダブルクォーテーション `for /f`の構文では - 0. ファイル名→クォーテーションなし - 0. コマンドの返り値→シングルクォーテーション --- 私的メモ、ダブルクォーテーションで括ったPATHを引数とした場合とワイルドカード ワイルドカードの2重利用は許されなかった ![](0bdaff7abf9c85051b4e9140ad75b36f.png)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。