回答編集履歴

2

Zuishin さんのコメントを元に表現変更

2020/01/06 10:55

投稿

imihito
imihito

スコア2166

test CHANGED
@@ -6,7 +6,17 @@
6
6
 
7
7
 
8
8
 
9
+ (200106 : Zuishin さんのコメントを元に表現変更)
10
+
11
+ 質問のエラーは、PowerShell の以下の二つの動作が原因となります。
12
+
13
+
14
+
15
+ ---
16
+
17
+
18
+
9
- PowerShell のコマンド(コマンドレット・関数・ネイティブコマンドなど)は、スペース` `を引数の区切りとして認識します。
19
+ 一つ目は、PowerShell のコマンド(コマンドレット・関数・ネイティブコマンドなど)は、スペース` `を引数の区切りとして認識することです
10
20
 
11
21
 
12
22
 
@@ -24,11 +34,43 @@
24
34
 
25
35
 
26
36
 
37
+ 位置指定のパラメータを3個指定することになりますが、[`Test-Path`](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/test-path?view=powershell-6)には位置指定パラメータが`Path`の1個しか無いため`「Test-Path : 引数 '+' を受け入れる位置指定パラメーターが見つかりません。」`のエラーが発生します。
38
+
39
+
40
+
41
+ ---
42
+
43
+
44
+
45
+ 二つ目は、PowerShell のコマンド(コマンドレット・関数・ネイティブコマンドなど)の後ろに入力した文字は、基本的に文字列として扱われることです(詳細は下記`about_Parsing`のリンク先参照)。
46
+
47
+
48
+
49
+ > [about_Parsing (日本語)](https://forsenergy.com/ja-jp/windowspowershellhelp/html/8c0cf6ee-9628-435f-824d-b36147574e19.htm)
50
+
51
+ > [about_Parsing - PowerShell | Microsoft Docs](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_parsing?view=powershell-6)
52
+
53
+
54
+
55
+ そのため、「一つ目」の内容を元に「`Test-Path $PATH+"¥*.csv"`」のようにスペース` `を抜いて記述しても、エラーこそ出ませんが意図したように動作しません。
56
+
57
+
58
+
59
+ `Test-Path $PATH+"¥*.csv"`としたときは、`+`が演算子ではなく、文字の一部と解釈されているためです。
60
+
61
+
62
+
27
63
  使用しているエディタや設定によりますが、Windows PowerShell ISE では以下のように`+`が紫色で表示され、ただの文字列として認識されているのがわかります。
28
64
 
29
65
 
30
66
 
31
- ![NGCode_PowerShellISE](54f1ed589e18d86117ee8bc470a7d208.png)
67
+ ![イメージ説明](497b1ae6d8404807a12429a00c4981bb.png)
68
+
69
+
70
+
71
+ ---
72
+
73
+
32
74
 
33
75
 
34
76
 

1

誤記修正

2020/01/06 10:55

投稿

imihito
imihito

スコア2166

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
  1. ひとまとめにしたい範囲を()で囲む (汎用的)
40
40
 
41
- 2. PowerShell 文字列内に変数埋め込みを使う (言語特有・やや注意が必要)
41
+ 2. 文字列内に変数埋め込みを使う (言語特有・やや注意が必要)
42
42
 
43
43
  3. 一度文字列を別の変数に格納してから実行する(やや手間だが汎用的)
44
44