teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

校正

2020/04/27 08:17

投稿

N-B-I
N-B-I

スコア12

title CHANGED
File without changes
body CHANGED
@@ -38,5 +38,7 @@
38
38
  - 0. ファイル名→クォーテーションなし
39
39
  - 0. コマンドの返り値→シングルクォーテーション
40
40
 
41
+ ---
42
+ 私的メモ、ダブルクォーテーションで括ったPATHを引数とした場合とワイルドカード
41
- 私的メモ、ワイルドカードの2重利用は許されなかった
43
+ ワイルドカードの2重利用は許されなかった
42
- ![ダブルクォーテーションで括ったPATHを引数とした場合とワイルドカード](0bdaff7abf9c85051b4e9140ad75b36f.png)
44
+ ![](0bdaff7abf9c85051b4e9140ad75b36f.png)

1

解決報告

2020/04/27 08:17

投稿

N-B-I
N-B-I

スコア12

title CHANGED
File without changes
body CHANGED
@@ -1,29 +1,42 @@
1
1
  [入門講義【第15章】 いろんなフォルダからファイルを集める](https://jj-blues.com/cms/kogi15/)
2
- 節:ファイルを集めるバッチファイルを作る より
2
+ 節:~~ファイルを集めるバッチファイルを作る~~複数のファイルを集める より
3
- ```bat
3
+ > ```bat
4
- @echo off
4
+ > @echo off
5
-
5
+ >
6
- dir /b /s メモ_1.txt > list.txt
6
+ > dir /b /s メモ_*.txt > list.txt
7
-
7
+ >
8
- for /f %%a in (list.txt) do (
8
+ > for /f %%a in (list.txt) do (
9
- copy "%%a" .\collection\
9
+ > copy "%%a" .\collection\
10
- )
10
+ > )
11
11
  ```
12
+
12
13
  ---
14
+
13
15
  節:複数のファイルを集める より
14
- ```bat
16
+ > ```bat
15
- @echo off
17
+ > @echo off
16
-
18
+ >
17
- for /f %%A in ('dir /b /s メモ_*.txt') do (
19
+ > for /f %%A in ('dir /b /s メモ_*.txt') do (
18
- copy "%%A" ./collection/
20
+ > copy "%%A" ./collection/
19
- )
21
+ > )
20
- ```
22
+ > ```
21
23
  > 「for」コマンドの「in( )」の括弧内に直接「dir」コマンドを書いた形です。このときdir文をシングルクォーテーション「’」で囲むのを忘れないようにしましょう。(**※ダブルクォーテーション「”」ではエラーになります。**)
22
24
 
23
25
  **PATHのスラッシュの向きがおかしい気がしますがそれはさておき…**
24
26
 
25
27
  ### Q.
26
28
  0. 何故一例目では不要だったシングルクォーテーションがfor文では必要なのですか?
27
- ()で括られているにも関わらず別のコマンドが行頭にあると別のコマンド以下が一括りであるとみなされないのですか?
29
+ ()で括られているにも関わらず別のコマンドが行頭にあると~~別の~~**dir**コマンド以下が一括りであるとみなされないのですか?
28
30
  0. スペースを含むものを括るならダブルクォーテーション、というざっくりした理解ですが、
29
- この場合何故シングルクォーテーションなのですか?
31
+ この場合何故シングルクォーテーションなのですか?
32
+
33
+ ### 解決後記、ご回答ありがとうございます
34
+ まとめ
35
+ 一般に、スペースを含む文字列をコマンドの1つの引数として使う→ダブルクォーテーション
36
+
37
+ `for /f`の構文では
38
+ - 0. ファイル名→クォーテーションなし
39
+ - 0. コマンドの返り値→シングルクォーテーション
40
+
41
+ 私的メモ、ワイルドカードの2重利用は許されなかった
42
+ ![ダブルクォーテーションで括ったPATHを引数とした場合とワイルドカード](0bdaff7abf9c85051b4e9140ad75b36f.png)