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

回答編集履歴

7

修正

2020/09/03 23:47

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -53,4 +53,4 @@
53
53
  書き換え部分については脇道なので詳細に説明しませんが、ファイル中の `1` を `一` に書き換えています。テスト用のフォルダとファイルを作成し、上記コマンドで `1` が `一` になることがわかったらこの問題は解決済みにしてください。中身の書き換えの詳細についてはまた別の質問だと思います。
54
54
 
55
55
  なお、わからないコマンドの詳細については `Get-Help Get-ChildItem` のように `Get-Help` コマンドを使ってください。
56
- また、`-LiteralPath` を多用していますが、これはファイル名をそのまま使用するオプションです。`-LiteralPath` を省略すると、代わりに `-Path` オプションが使われますが、このオプションは一部の文字がワイルドカードとして認識されるので、思わない結果になることがあります。パス名を手で入力するとき以外は必ず `-Literalpath` を使いましょう。
56
+ また、`-LiteralPath` を多用していますが、これはファイル名をそのまま使用するオプションです。`-LiteralPath` を省略すると、代わりに `-Path` オプションが使われますが、このオプションは一部の文字がワイルドカードとして認識されるので、思わない結果になることがあります。ワイルドカードが必要なとき以外は必ず `-Literalpath` を使いましょう。

6

修正

2020/09/03 23:47

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -38,15 +38,15 @@
38
38
  ```PowerShell
39
39
  Get-ChildItem | Where-Object {
40
40
  $_.Name -match '^\d+_(.+)グループ_(.+)店'
41
- } | Get-ChildItem -Include 'b.txt' | Foreach-Object {
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

修正

2020/09/03 23:44

投稿

Zuishin
Zuishin

スコア28675

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

修正

2020/09/03 23:42

投稿

Zuishin
Zuishin

スコア28675

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

修正

2020/09/03 23:40

投稿

Zuishin
Zuishin

スコア28675

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

修正

2020/09/03 23:36

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -33,7 +33,7 @@
33
33
 
34
34
  `Add-Content` は特定のファイルの末尾に与えられたデータを追加するコマンドレットなので、これで追記できるということです。
35
35
 
36
- もし、望む編集が追記ではなく書きだとしたら、`Add-Content` は使えません。次のように、まず元のファイルの名前を変更し、その中身を置換したものを元のファイル名で出力するのが良いと思います。
36
+ もし、望む編集が追記ではなく一部の置換だとしたら、`Add-Content` は使えません。次のように、まず元のファイルの名前を変更し、その中身を置換したものを元のファイル名で出力するのが良いと思います。
37
37
 
38
38
  ```PowerShell
39
39
  Get-ChildItem | Where-Object {

1

修正

2020/09/03 23:35

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  これで求められるディレクトリを列挙できます。
8
8
 
9
- `Get-ChildItem` はそのディレクトリにあるファイルやディレクトリを列挙するコマンドレットで、その出力である `System.IO.FileSystemInfo` の配列を `Where-Object` に渡しています。
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` を出力します。