ちょっと修正と補足。
17行目はIO.PathクラスのChangeExtensionメソッドを使ったほうがスマートっぽい。
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 | <# .SYNOPSIS Zip圧縮ファイルを作る .DESCRIPTION フォルダーまたはファイルを指定して同一フォルダーにZipファイルを作る .EXAMPLE makezip.ps1 "D:\test" makezip.ps1 "D:\test\sample.txt" #> param( [parameter(Mandatory=$true, HelpMessage="圧縮したいファイル(フォルダ)のパスを指定してください。")] [ValidateScript({Test-Path $_})] $target ) $targetobj = Get-Item $target #$zipfile = ($targetobj.fullname -replace $targetobj.Extension,"") + ".zip" $zipfile = [IO.Path]::ChangeExtension($targetobj.fullname, ".zip") Set-Content $zipfile ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18)) $zip = (new-object -com shell.application).NameSpace($zipfile) $zip.CopyHere($target) |
18行目の("$([char]0)" * 18))は雰囲気で判るとは思うが、Asciiコードがゼロのキャラクター(文字)を18個つなげるって事。
PS>("$([char]0)" * 18) -eq (([char]0).ToString() * 18) |
0 件のコメント:
コメントを投稿