PowerShellで連続zip圧縮する際のエラー
バッチでpowershellを使って複数ファイルを連続してzip圧縮する際、「test's.txt」のような「'」を含むファイル名でエラーが発生して困っています。
ネットで調べた限り、「LiteralPath」で指定するとか、「`」でエスケープする等を試したのですが、当方はVBAを多少たしなむ程度のど素人なので、解決に至りませんでした。
発生するエラーは、次のとおりです。
___________________________
compress-archive : パス 's.txt -DestinationPath D:\Users\ーー\Desktop' が存在しないか、または有効なファイル システム パ
スではありません。
発生場所 行:1 文字:1
+ compress-archive -Path 'D:\Users\ーー\Desktop\test's.txt' -Destinatio ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (s.txt -Destinat...rs\ーー\Desktop:String) [Compress-Archive]、InvalidOp
erationException
+ FullyQualifiedErrorId : ArchiveCmdletPathNotFound,Compress-Archive
___________________________
スペシャリストの方、解決策をご教示よろしくお願いいたします。
以下、当方がネット情報を参考に作成したバッチの記述です。
___________________________
@echo off
setlocal
:label_top
rem 引数がない場合は最後に飛んで終了する
if "%~1"=="" (
goto :label_bottom
)
rem 圧縮前ファイル
set str_file=%~1
echo %str_file:'=`'%
rem 圧縮後ファイル
set str_zipfile=%str_file%.zip
echo %str_zipfile:'=`'%
rem zip圧縮実行
powershell compress-archive -LiteralPath '%str_file%' -DestinationPath '%str_zipfile%' -Force
echo %str_zipfile%
rem 引数をシフトし、最初に戻る
shift
goto :label_top
:label_bottom
echo 処理を終了しました
endlocal
pause
お礼
ありがとうございます! 質問内容に沿ってお答えいただき、凄くよくわかりました! 参考にさせていただいて頑張ろうと思います! ありがとうございました!