2016-09-14 11 views
2

私は.batファイルを作成しようとしていますが、現在のフォルダ名とカスタム拡張と自動的に一致するファイル名を持つファイルを選択します。原因終わりにターミネータに例えば現在のフォルダの名前であるZIPファイルの名前を持つWinRARでZIPファイルを作成するには?

は、ディレクトリC:\thisIsAFolder\

Winrar a -afzip %thisIsAFolder%.PicZip *.jpg *.png *.gif 

以内に私は%CD%を使用しようとしていたが、それは動作しません、可能性?

これは大きなバッチファイルの小さな部分ですが、動作しない唯一の部分です。

バッチファイルを使用する代わりに私は公開されています。

@echo off 
if not "%CD:~-1%" == "\" (
    for /F %%I in ("%CD%") do set "FolderName=%%~nxI" 
) else (
    set "FolderName=Drive%CD:~0,1%" 
) 
"%ProgramFiles%\WinRAR\WinRAR.exe" a -afzip -cfg- -ibck -m0 -y "%FolderName%.PicZip" *.jpg *.png *.gif 
set FolderName= 

注:WinRAR.exeへのパスがWinRARののインストールに応じて、あなたのマシン上で異なる場合があります

+0

だけの問題で線の上on'のエコーと、それは出力内容を確認 '置きます。そのコマンドは正しく見えますか? –

+0

変数に親ディレクトリ名を取得しようとしているとします。 '%%a in("%〜dp0 \ .. ")do set parent = %%〜nxa' – Squashman

+0

Ryan、エコーの提案のおかげで、問題は完全なパス名が含まれていました。 c:/ etc。 – Frodofeet

答えて

0

このバッチコードは、このタスクを使用することができます。

環境変数CDは、現在のディレクトリへのパスを保持します。現在のディレクトリがドライブのルートディレクトリであることを除いて、このパスはバックスラッシュで終了しません。

IFの条件は、現在のディレクトリパスの最後の文字とバックスラッシュを比較します。最後の文字はバックスラッシュではなく、コマンドの場合はが、現在のディレクトリの名前である最後のバックスラッシュの後の文字列をディレクトリパス全体から取得するために使用されます。それ以外の場合は、現在のディレクトリはドライブのルートディレクトリで、フォルダ名はドライブ文字が付加されたDriveと定義されています。

スイッチ-m0の* .jpg、* .png、および* .gifファイルにはすでに圧縮データが含まれているため、ZIPファイルは圧縮方法storeで作成されるため、再圧縮はあまり意味がありません。メニューヘルプヘルプトピックからWinRARので開いているスイッチの説明について

。タブ上内容オープンリスト項目コマンドラインモードおよびサブ項目スイッチ。ヘルプページを開くアルファベットスイッチはをリストし、スイッチについて読む。

使用されているコマンドとその動作方法を理解するには、コマンドプロンプトウィンドウを開き、次のコマンドを実行して、コマンドごとに表示されているすべてのヘルプページをすべてよく読んでください。

  • echo /?
  • if /?
  • for /?
  • set /?
関連する問題