現在、7Zipを利用して、ZIPファイルなどの圧縮してほしくないファイルを除いて圧縮するバッチファイルを実現しようとしています。
その中で、圧縮したいフォルダ名をコマンドライン引数として渡した時、そのフォルダ名はそのままで、拡張子が.zipのファイルを出力したい、といったときの挙動を考えているのですが、思うような動きをしてくれません。
どのような点で間違えているのか、お教えいただけないでしょうか?
目指す動き↓
PS D:\WorkPractice> 7zipper .\bincount\ 圧縮後ファイル名入力...(省略可)test パスワード入力...(省略可) 圧縮方法:拡張子...(デフォルト:zip) 7-Zip [64] 9.38 beta Copyright (c) 1999-2014 Igor Pavlov 2015-01-03 ~~~~~~中略~~~~~~~ PS D:\WorkPractice> ls ディレクトリ: D:\WorkPractice Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2016/09/06 18:38 bincount -a---- 2017/07/13 19:14 50117 test.zip
現状1(圧縮後ファイル名を入力しても反映されない)↓
PS D:\WorkPractice> 7zipper .\bincount\ 圧縮後ファイル名入力...(省略可)test パスワード入力...(省略可) 圧縮方法:拡張子...(デフォルト:zip) 7-Zip [64] 9.38 beta Copyright (c) 1999-2014 Igor Pavlov 2015-01-03 ~~~~~~中略~~~~~~~ PS D:\WorkPractice> ls ディレクトリ: D:\WorkPractice Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2016/09/06 18:38 bincount -a---- 2017/07/13 19:14 50117 .bincount.zip
現状2(圧縮後ファイル名を省略したときも、不要な'.'が残る:消し方がわからない)↓
PS D:\WorkPractice> 7zipper .\bincount\ 圧縮後ファイル名入力...(省略可) パスワード入力...(省略可) 圧縮方法:拡張子...(デフォルト:zip) 7-Zip [64] 9.38 beta Copyright (c) 1999-2014 Igor Pavlov 2015-01-03 ~~~~~~中略~~~~~~~ PS D:\WorkPractice> ls ディレクトリ: D:\WorkPractice Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2016/09/06 18:38 bincount -a---- 2017/07/13 19:14 50117 .bincount.zip
ファイルは、以下のようになります
bat
1@echo off 2 3set PASSWORD= 4set RAWFNAME= 5set COMPFNAME= 6set COMPMODE=zip 7 8if not "%1" == "" ( 9 set RAWFNAME=%1 10) else ( 11 set /p RAWFNAME="対象ファイル入力..." 12 if "%RAWFNAME%" == "" ( 13 echo bye! 14 exit /B FALSE 15 ) 16) 17 18if not "%2" == "" ( 19 set COMPFNAME=%1 20) else ( 21 set /p COMPFNAME="圧縮後ファイル名入力...(省略可)" 22 if "%COMPFNAME%" == "" ( 23 set COMPFNAME=%RAWFNAME:\=% 24 ) 25) 26 27set /p STDIN="パスワード入力...(省略可)" 28if not "%STDIN%" == "" ( 29 set PASSWORD=-p%STDIN% 30) 31 32set /p COMPMODE="圧縮方法:拡張子...(デフォルト:zip)" 33 34set COMPFNAME=%COMPFNAME%.%COMPMODE% 35set COMPMODE=-t%COMPMODE% 36 37rem echo "%RAWFNAME%" 38rem echo "%COMPFNAME%" 39rem echo "%COMPMODE%" 40rem echo "%PASSWORD%" 41 42rem ここで COMPMODE="-tzip" 43rem COMPFNAME="test.zip" 44rem RAWFNAME=".\src\" 45rem PASSWORD="-pPASS" 46rem などとなっていると期待通りに動く 47 487z a %COMPMODE% %COMPFNAME% %RAWFNAME% %PASSWORD% -xr!*7z -xr!*zip -xr!*BAK 49
set COMPFNAME=%RAWFNAME:.=% set COMPFNAME=%RAWFNAME:¥=%
を試してみたりもしたのですが、¥=.zip というファイルができる結果となってしまいました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。