2016-06-27 7 views
1

私はフォルダを反復する必要があり、各zipファイルに対して、その名前で抽出する必要があります。つまり、そのtest.zipなら、それはテストフォルダに抽出する必要があります。同様に、それは私のフォルダとその子フォルダを反復して、そのものを抽出する必要があります。私は以下のコードを書いたが、それはジッパーの名前で抽出しない。ご意見をお聞かせください。zipと同じ名前のwinrarを使用してフォルダ内のすべてのzipファイルを抽出するには?

cd %CD%\Setups 
for /r %%i in ("*.zip") do (
    echo "%%~fi" 
    "C:\Program Files (x86)\WinRAR\WinRAR.exe" a -afzip "%%~dpi" "%%~fi" 
    echo came after unzipping 
    del /S /Q "%%~fi" 
) 
exit \b 
+0

'%〜dpi'ではなく'%〜dpni'はどうでしょうか? – aschipfl

+0

%〜dpniは、抽出する必要がある現在の場所を探しています。しかし〜%fiは私にzipの名前に作成されるべきフォルダ名を与えていません。つまり、test.zipファイルがテストフォルダに展開されていません。 – mayooran

+0

'%%〜dpi'は' .zip'ファイルのコンテナを指します。 '%%〜ni'は' .zip'ファイルのベース名です(例えば 'test')。' %%〜dpni 'は抽出するフォルダを指します。 '%%〜fi'が' .zip'ファイルを指しています... – aschipfl

答えて

1

Winrar.exeにzipファイルを抽出するための構文は、そのようなものです:

[パス\ winrar.exe]×[ZIPファイルへのパス]は、[ファイルを抽出するために、。あなたはこのスイッチ-ibck実行したい場合は28/06/2016

午前13時35分@上のすべての ファイル] [に抽出するためのパスフォルダ]

@echo off 
set winrar=%ProgramFiles%\WinRAR\WinRAR.exe 
CD /D %CD%\Setups 
for /f "delims=" %%i in ('Dir /b *.zip') Do ("%Winrar%" x "%%~fi" "%%~dpni\") 
pause 

編集のためにあなたはまた、追加することができますWinRAR in background:

@echo off 
set winrar=%ProgramFiles%\WinRAR\WinRAR.exe 
CD /D %CD%\Setups 
for /r %%i in ("*.zip") Do ("%Winrar%" x -ibck "%%~fi" "%%~dpni\") 
pause 
+0

forループは、指定した方法で使用されたときに「ファイルが見つかりません」と表示します。だから私は "/ *%(" * .zip ")のために"使用し、それはうまく動作します。あなたが指定したforループがうまくいかない理由を知ることができますか:( – mayooran

+0

@mayooran私はあなたに投稿する前に私のスクリプトをテストし、それは魅力のように私のために働く:)私は 'set winrar =%ProgramFiles%\ WinRAR \ WinRAR.exe \ winrar =%ProgramFiles(x86)%\ WinRAR \ WinRAR.exe' – Hackoo

+0

これは実際にはforループからのものではありません。そのファイルを投げていた行がエラーを見つけられなかったことを見つけるために、行ごとに削除しました。もう一度チェックします。ありがとう:) – mayooran

関連する問題