LoginSignup
ken203
@ken203

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

7zipで複数のフォルダを個別に圧縮したいです

Q&A

解決したいこと

7zipを使って複数のフォルダ縮を個別で圧縮するバッチファイルを作りたいです。
こちら((https://aprico-media.com/posts/3687))
を参考にバッチファイルを作りましたが、フォルダだけ圧縮できません。
解決方法を教えてください。

Windows仕様

・windows10HOME
・22H2
・19045.2486

発生している問題・エラー

image.png

作成したバッチファイル

{r, attr.source='.numberLines'}
@ECHO OFF
SET path="C:\Program Files\7-Zip\"
SET exeFile=7z.exe

REM zip解凍パスワード(%はエスケープのため%%とする)
SET pass="password"

FOR %%f IN (*) DO (
  %path%%exeFile% a -p%pass% %%~dpf%%~nf.7z %%f
)

ECHO zip process finished

pause

自分で試したこと

パスワードの設定なし版のバッチファイルを作成⇒変化なし

FOR %%f IN (*) DO (
  %path%%exeFile% a  %%~dpf%%~nf.7z %%f
)

zipファイル圧縮するように変更⇒変化なし

FOR %%f IN (*) DO (
  %path%%exeFile% a %%~dpf%%~nf.7zip %%f
)

for文内の以下の記載に関してわかっておらず、この部分に原因があるような気がしていますがよくわかっていません。

%%~dpf%%~nf

よろしくお願いいたします。

0

2Answer

FOR文が分かり難いならforfilesを使ってみるのもアリかもしれません。
参考までに記載いたします。
@fileの部分に対象となるファイル名やフォルダー名が入ってきます。
echoの部分を実行したいコマンドに書き換えてあげればいいかもしれないです。
この場合、フォルダ圧縮用のforfiles、ファイル圧縮用のforfilesが必要ですね。

カレントディレクトリのフォルダを取得
forfiles /p .\ /c "cmd /c IF @isdir==TRUE echo @file"

カレントディレクトリのファイルを取得
forfiles /p .\ /c "cmd /c echo @file"

公式マニュアル
https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/forfiles

1

ご回答ありがとうございます!
forfiles を使ってできるようにやってみます。
公式マニュアルの記載もありがとうございます!

0

Your answer might help someone💌