回答編集履歴
7
修正
answer
CHANGED
@@ -53,4 +53,4 @@
|
|
53
53
|
書き換え部分については脇道なので詳細に説明しませんが、ファイル中の `1` を `一` に書き換えています。テスト用のフォルダとファイルを作成し、上記コマンドで `1` が `一` になることがわかったらこの問題は解決済みにしてください。中身の書き換えの詳細についてはまた別の質問だと思います。
|
54
54
|
|
55
55
|
なお、わからないコマンドの詳細については `Get-Help Get-ChildItem` のように `Get-Help` コマンドを使ってください。
|
56
|
-
また、`-LiteralPath` を多用していますが、これはファイル名をそのまま使用するオプションです。`-LiteralPath` を省略すると、代わりに `-Path` オプションが使われますが、このオプションは一部の文字がワイルドカードとして認識されるので、思わない結果になることがあります。
|
56
|
+
また、`-LiteralPath` を多用していますが、これはファイル名をそのまま使用するオプションです。`-LiteralPath` を省略すると、代わりに `-Path` オプションが使われますが、このオプションは一部の文字がワイルドカードとして認識されるので、思わない結果になることがあります。ワイルドカードが必要なとき以外は必ず `-Literalpath` を使いましょう。
|
6
修正
answer
CHANGED
@@ -38,15 +38,15 @@
|
|
38
38
|
```PowerShell
|
39
39
|
Get-ChildItem | Where-Object {
|
40
40
|
$_.Name -match '^\d+_(.+)グループ_(.+)店'
|
41
|
-
} | Get-ChildItem -Include '
|
41
|
+
} | Get-ChildItem -Include 'a.txt' | Foreach-Object {
|
42
42
|
$backup = $_.FullName + '.bak'
|
43
43
|
if (Test-Path -LiteralPath $backup) {
|
44
44
|
Remove-Item -LiteralPath $backup
|
45
45
|
}
|
46
46
|
Copy-Item -LiteralPath $_ -Destination $backup
|
47
47
|
Get-Content -LiteralPath $backup | Foreach-Object {
|
48
|
-
$_ -replace '1', '一'
|
48
|
+
$_ -replace '1', '一' # この $_ は Get-Content の出力であるファイルの中身を指す
|
49
|
-
} | Set-Content -LiteralPath $_
|
49
|
+
} | Set-Content -LiteralPath $_ # この $_ は Get-ChildItem -Include 'a.txt' の出力であるファイルシステムオブジェクトを指す
|
50
50
|
}
|
51
51
|
```
|
52
52
|
|
5
修正
answer
CHANGED
@@ -46,7 +46,7 @@
|
|
46
46
|
Copy-Item -LiteralPath $_ -Destination $backup
|
47
47
|
Get-Content -LiteralPath $backup | Foreach-Object {
|
48
48
|
$_ -replace '1', '一'
|
49
|
-
} | Set-Content $_
|
49
|
+
} | Set-Content -LiteralPath $_
|
50
50
|
}
|
51
51
|
```
|
52
52
|
|
4
修正
answer
CHANGED
@@ -52,4 +52,5 @@
|
|
52
52
|
|
53
53
|
書き換え部分については脇道なので詳細に説明しませんが、ファイル中の `1` を `一` に書き換えています。テスト用のフォルダとファイルを作成し、上記コマンドで `1` が `一` になることがわかったらこの問題は解決済みにしてください。中身の書き換えの詳細についてはまた別の質問だと思います。
|
54
54
|
|
55
|
-
なお、わからないコマンドの詳細については `Get-Help Get-ChildItem` のように `Get-Help` コマンドを使ってください。
|
55
|
+
なお、わからないコマンドの詳細については `Get-Help Get-ChildItem` のように `Get-Help` コマンドを使ってください。
|
56
|
+
また、`-LiteralPath` を多用していますが、これはファイル名をそのまま使用するオプションです。`-LiteralPath` を省略すると、代わりに `-Path` オプションが使われますが、このオプションは一部の文字がワイルドカードとして認識されるので、思わない結果になることがあります。パス名を手で入力するとき以外は必ず `-Literalpath` を使いましょう。
|
3
修正
answer
CHANGED
@@ -50,4 +50,6 @@
|
|
50
50
|
}
|
51
51
|
```
|
52
52
|
|
53
|
-
書き換え部分については脇道なので詳細に説明しませんが、ファイル中の `1` を `一` に書き換えています。テスト用のフォルダとファイルを作成し、上記コマンドで `1` が `一` になることがわかったらこの問題は解決済みにしてください。中身の書き換えの詳細についてはまた別の質問だと思います。
|
53
|
+
書き換え部分については脇道なので詳細に説明しませんが、ファイル中の `1` を `一` に書き換えています。テスト用のフォルダとファイルを作成し、上記コマンドで `1` が `一` になることがわかったらこの問題は解決済みにしてください。中身の書き換えの詳細についてはまた別の質問だと思います。
|
54
|
+
|
55
|
+
なお、わからないコマンドの詳細については `Get-Help Get-ChildItem` のように `Get-Help` コマンドを使ってください。
|
2
修正
answer
CHANGED
@@ -33,7 +33,7 @@
|
|
33
33
|
|
34
34
|
`Add-Content` は特定のファイルの末尾に与えられたデータを追加するコマンドレットなので、これで追記できるということです。
|
35
35
|
|
36
|
-
もし、望む編集が追記ではなく
|
36
|
+
もし、望む編集が追記ではなく一部の置換だとしたら、`Add-Content` は使えません。次のように、まず元のファイルの名前を変更し、その中身を置換したものを元のファイル名で出力するのが良いと思います。
|
37
37
|
|
38
38
|
```PowerShell
|
39
39
|
Get-ChildItem | Where-Object {
|
1
修正
answer
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
これで求められるディレクトリを列挙できます。
|
8
8
|
|
9
|
-
`Get-ChildItem` はそのディレクトリにあるファイルやディレクトリを列挙するコマンドレットで、その出力である `System.IO.FileSystemInfo` の
|
9
|
+
`Get-ChildItem` はそのディレクトリにあるファイルやディレクトリを列挙するコマンドレットで、その出力である `System.IO.FileSystemInfo` の集合を `Where-Object` に渡しています。
|
10
10
|
|
11
11
|
`Where-Object` は与えられた入力に対し、続くスクリプトブロックの出力が `$true` であるもののみ出力します。
|
12
12
|
この場合は `Get-ChildItem` の出力である `System.IO.FileSystemInfo` の `Name` プロパティが続く正規表現に合致している時に `$true` を出力し、していないときに `$false` を出力します。
|