2016-09-14 103 views
2

我想製作一個.bat文件,該文件將使用自動匹配當前文件夾名稱和自定義擴展名的文件名壓縮選擇的文件。如何用WinRAR創建一個ZIP文件名稱爲當前文件夾的名稱的ZIP文件?

例如,目錄C:\thisIsAFolder\

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

我試圖用%CD%,但它不工作,可能內由於在年底終止?

這是較大批處理文件的一小部分,但它是唯一不起作用的部分。

我打開使用批處理文件的替代方案。

+0

認沽'呼應on'只是問題的線之上,看看它輸出。這個命令看起來正確嗎? –

+0

打算假設您正在嘗試將父目錄名稱獲取到變量中。 (for %% a in(「%〜dp0 \ ..」)do set parent = %%〜nxa' – Squashman

+0

Ryan,感謝回顯建議,問題是包含完整的路徑名; C:/等。 – Frodofeet

回答

0

此批代碼可以用於此任務:

@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的你的機器上的不同。

環境變量CD保存到當前目錄的路徑。除了當前目錄是驅動器的根目錄之外,此路徑不會以反斜槓結尾。

IF條件比較當前目錄路徑的最後一個字符和反斜槓。如果最後一個字符不是反斜槓,則使用命令FOR從整個目錄路徑獲取最後一個反斜槓(即當前目錄的名稱)之後的字符串。否則,當前目錄是驅動器的根目錄,並且文件夾的名稱被定義爲Drive並附有驅動器號。

ZIP文件是由壓縮方法store創建的,因爲開關-m0爲* .jpg,* .png和* .gif文件包含已壓縮的數據,因此重新壓縮沒有太大意義。

對於交換機WinRAR的從菜單幫助幫助主題開放的解釋。在標籤內容打開清單項目命令行模式和子項目開關。打開幫助頁面字母順序開關列表並閱讀有關開關。

爲了解所使用的命令及其工作方式,請打開命令提示符窗口,在其中執行以下命令,並仔細閱讀爲每個命令顯示的所有幫助頁面。

  • echo /?
  • if /?
  • for /?
  • set /?
相關問題