動作環境
エディション | 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にすることができました。