スポンサーリンク

Powershellで圧縮する時にフォルダパスを読み込めなかったので記号をエスケープ処理する

Powershellで圧縮する時に フォルダパスを読み込めなかったので記号を エスケープ処理するWindows
Powershellで圧縮する時に フォルダパスを読み込めなかったので記号を エスケープ処理する
スポンサーリンク

動作環境

エディションWindows 10 Home
バージョン21H2
エクスペリエンスWindows Feature Experience Pack 120.2212.4180.0
動作環境

準備

ログファイル置き場とzipを配置するフォルダを作成。

mkdir c:\txt\(20220925)
mkdir c:\zip\(20220925)

linuxの場合はtouchコマンドですがwindowsの場合typeコマンドでファイルを作成します。

type nul > c:\txt\(20220925)\log.txt

圧縮

windows標準のzipコマンドを使用します。

Compress-Archive (Microsoft.PowerShell.Archive) - PowerShell
このコマンドレットは Compress-Archive 、指定された 1 つ以上のファイルまたはディレクトリから圧縮されたアーカイブ ファイルまたは zip 形式のアーカイブ ファイルを作成します。 アーカイブは、オプションの圧縮を使用して複数のファイルを 1 つの zip 形式のファイルにパッケージ化して、配布と保存...

compress-archive オプション

-Path 圧縮するファイルの場所

-Force 新規作成、既存のzipがあれば上書き

-Update 新規作成、既存のzipがあれば追記

-DestinationPath 圧縮先の場所

完成したコマンド

powershell compress-archive -Path c:\txt\(20220925)\log.txt -Force -DestinationPath c:\zip\(20220925)\log.zip

エラー発生

Compress-Archive : 引数 '20220925' を受け入れる位置指定パラメーターが見つかりません。
発生場所 行:1 文字:1
+ compress-archive -Path c:\txt\(20220925)\log.txt -Force -DestinationPa ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Compress-Archive]、ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Compress-Archive

()かっこがついているため、パスが上手く読み込めていないようです。

()などの記号を意味のある特殊文字ではなく文字列として扱いたいのでエスケープ処理をする必要があります。

powershellの場合は`(バッククォート)をエスケープしたい文字の前に記述します。

batchの場合は^キャレットだったので無駄にはまりました。エスケープ文字はプログラムによって違うので要確認。

修正版

powershell compress-archive -Path c:\txt\`(20220925`)\log.txt -Force -DestinationPath c:\zip\`(20220925`)\log.zip

無事zipにすることができました。

タイトルとURLをコピーしました