前回 Add-Contentコマンドレットの-Pathパラメータ を紹介しました。
今回はAdd-Contentコマンドレットの-literalPathパラメータについてまとめた(http://pswiki.hiros-dot.net/) のでご紹介します。
-literalPath <string[]>
内容を追加する先のパスを指定します。ただし-pathパラメータと異なり、ワイルドカードを指定することができません。パスにワイルドーカード文字を含めてもワイルドカードとして認識されないためエラーが発生します。パスにエスケープ文字が含まれている場合は単一引用符で囲む必要があります。(PowerShellでは`(アクサングラーブ文字)がエスケープ文字として扱われます。)
注意)ワイルドカードは指定できない
Add-Content -literalPath "Test*.txt" -Value "abc"
はエラーになります。-pathパラメータはワイルドカードを使用して複数ファイルへの書き込みが可能ですが-literalPathはできません。ただしカンマ区切りによる複数ファイルの指定は可能です。
–––––––––– -literalPathパラメータの使用例1 ––––––––––
Add-Content -literalPath "test.txt" -Value "ABC"
このコマンドを実行すると、カレントディレクトリに存在する test.txt というファイルに"ABC"という文字列を追記します。ファイルが存在しない場合は新規で作成され"ABC"という文字列を書き込みます。
–––––––––– -literalPathパラメータの使用例2 ––––––––––
Add-Content -literalPath "test1.txt","test2.txt" -Value "ABC"
このコマンドを実行すると、test1.txt と test2.txtの2つのファイルに文字列"ABC"を追記します。ファイルが存在しない場合は新規で作成され"ABC"という文字列を書き込みます。
–––––––––– -literalPathパラメータの使用例3 ––––––––––
Add-Content -literalPath 'tes`t.txt' -Value "ABC"
このコマンドを実行すると、カレントディレクトリに存在する tes`t.txt というファイルに"ABC"という文字列を追記します。ファイルが存在しない場合には新規で作成されます。
この例のように、パスにエスケープ文字が含まれている場合は単一引用符(')で括って指定します。
–––––––––– -literalPathパラメータの使用例4 ––––––––––
Add-Content -literalPath "tes[]t.txt" -Value "ABC"
このコマンドを実行すると、カレントディレクトリに存在する tes[]t.txt というファイルに"ABC"という文字列を追記します。ファイルが存在しない場合には新規で作成されます。
この例のようにパスにワイルドカードパターンが含まれていても文字として取り扱います。
–––––––––– -literalPathパラメータのNG例1 ––––––––––
Add-Content -literalPath "Test*.txt" -Value "abc"
このコマンドレットは、パスにワイルドカード(*)が含まれているためにエラーとなります。これは*をワイルドカードではなく文字として認識し、ファイル名として取り扱おうとしたことが原因となります。
まとめ
-literalPathパラメータの特徴は、なんといってもワイルドカード文字をワイルドカードとしてではなく文字として取り扱うことでしょう。
パスにワイルドカードが含まれている場合には-literalPathパラメータを使用するということを是非覚えておいてください。
コメント