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

|
1
解決報告
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 メモ
|
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
|
-
|
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
|
-
|
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
|
+

|