2012-08-15 114 views
0

僅需要批量編程幫助。需要定期備份某些文件夾,並想知道如何實現這一點。使用7zip壓縮某些目錄的批處理文件?

目標:滾動瀏覽目錄並使用特定名稱壓縮某些文件夾。

代碼邏輯:

//For all directories in folder 
    for /d %%X in (*) do (
    if (%%X != tag_******) 
     "7z.exe" a -ttar "%%X.tar" "%%X\" 
) 

for %%X in (*.tar) do 
    "7z.exe" a -tgzip "%%X.tgz" "%%X" 

如果可以批處理文件夾名稱,我該如何區分文件夾名稱?

例如:壓縮tag_aaa111,跳過tag_aaa111_v2,跳過所有的文件夾沒有前綴「tag_」

條件是該目錄與tag_開始,之後還會有恰好6個字符。

一直試圖弄清楚這一點。謝謝您的幫助。

編輯:代碼,澄清。

回答

2

你關心的語言

for /D %%f in (*) do (
    set dirname=%%f 
    if "%dirname:~0,4%"=="tag_" (
     7z ... %dirname% ... 
    ) 
) 

未經測試的:)?如果您想使用PERL,您可以執行如下操作:

while(<*>){ 
    if(-d && m/^tag_/){ 
    system("7zip $_"); # Change to whatever compress command you need 
    } else { 
    #other condition for other files and non matching directories 
    } 
} 

系統將使用裏面的任何參數進行系統調用。 -d將指定文件是否爲目錄,並且m //是與指定模式相匹配的正則表達式

+0

我能否讓Windows調度程序自動運行perl腳本來每晚自動執行腳本?不是很熟悉perl – 2012-08-15 21:32:18

+0

只要你有perl安裝。您應該能夠安排任何類型的腳本或可執行文件運行。 [調度perl腳本](http://serverfault.com/questions/267013/scheduling-a-perl-script-with-output-redirection)有一個解釋 – jcern 2012-08-15 21:37:30

+0

有趣。你知道perl是否有可以下載的cli可執行文件?即時嘗試避免安裝任何東西。 – 2012-08-15 21:44:26

1

看看Windows'FORIF批處理文件命令。基本上,它應該可以寫的東西是這樣的:

+0

哦完美。所以這個代碼塊會取代我的代碼塊之一。我假設if語句「7z ...%dirname%...」就是這樣一行:「7z.exe a -ttar%dirname%.tar%dirname%」?以及名稱中的dirname如何排列精確的10個字符? – 2012-08-15 21:38:19

相關問題