質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

2回答

10937閲覧

バッチファイルのシングルクォーテーションとダブルクォーテーションの違い、使い方

N-B-I

総合スコア12

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2020/04/26 18:03

編集2020/04/27 08:17

入門講義【第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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Q1

何故一例目では不要だったシングルクォーテーションがfor文では必要なのですか?

for /fの構文でそう決まっています。囲まないと、ファイル名とみなされてそのファイルを読みます。
シングルクォートが特別な意味を持つのは、for /fの構文だけです。
詳細は、for /?で表示されます。

()で括られているにも関わらず別のコマンドが行頭にあると別のコマンド以下が一括りであるとみなされないのですか?

文章がよく分かりませんが、for /fから閉じ括弧の)までが一括りです。

Q2

スペースを含むものを括るならダブルクォーテーション、というざっくりした理解ですが、

それは概ね合ってます。スペースを含む文字列をコマンドの1つの引数として使うためにはダブルクォーテーションでくくります。
あるいは、特別な構文でダブルクォーテーションが必要な場合と。

この場合何故シングルクォーテーションなのですか?

スペースを含む文字列をコマンドの1つの引数として使うというケースでは無いからです。
上述のように、for /fの構文です。

投稿2020/04/26 22:56

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

何故一例目では不要だったシングルクォーテーションがfor文では必要なのですか? ()で括られているにも関わらず別のコマンドが行頭にあると別のコマンド以下が一括りであるとみなされないのですか? スペースを含むものを括るならダブルクォーテーション、というざっくりした理解ですが、 この場合何故シングルクォーテーションなのですか?

for文の仕様です。
for /?で出てくるヘルプを読めばわかります。

投稿2020/04/26 21:29

gentaro

総合スコア8947

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問