2014-01-17 49 views
1

我一直在爲這個問題奮鬥了幾天,因爲我不是很懂代碼的人。基本上,我被給了一個巨大的壓縮文件,充滿了有人需要訪問的報告。當它被提取時,它具有完整的目錄結構,並且所有文件都是.tar.gz文件。我有一個工作批處理文件將所有.tar.gz提取到.tar,然後刪除.gz文件。導出多個TAR來維護文件結構和名稱

我現在面臨的問題是,在TAR裏面,所有文件名都是無意義的,作爲一系列數字。我正在嘗試製作一個.bat文件,它將提取TAR並將其內容重命名爲與.tar相同的文件名。 (每個TAR只有一個文件)。

下面是我在此刻得到了:

FOR /D /r %%F in ("*") DO (
    pushd %CD% 
    cd %%F 
    SET 
    FOR %%X in (*.tar) DO (
     set filename="%%X" 
     "C:\Program Files\7-zip\7z.exe" x "%%X" -aou -o"%%F\temp\" 
     REN "%%F\temp\*" %filename% 
     REN "%%F\temp\*.tar" "*.null" 
     MOVE "%%F\temp\*.null" "%%F" 
     RMDIR "%%F\Temp\" 
     DEL "%%X" 
    ) 
popd 
) 

我已經試過裝%%˚F到變量,但造成其他一系列問題。我有一個使用TrID識別和更正文件類型的最終腳本,因此.null值只是暫時的。

回答

0

測試此操作 - 意思是提取TAR文件,將提取的文件重命名爲與TAR相同的名稱,最後加上.null,然後刪除原始的TAR文件並將重命名的文件移動到原始位置TAR文件是刪除臨時文件夾。

這意味着要在主文件夾中運行,其中包含文件夾下的所有TAR文件。複製一些到另一個文件夾並嘗試。

@echo off 
FOR /r %%F in (*.tar) DO (
     "C:\Program Files\7-zip\7z.exe" x "%%F" -aou -o"%%~dpF\temp\" 
     REN "%%~dpF\temp\*.*" "%%~nF.null" 
     DEL "%%F" 
     MOVE "%%~dpF\temp\%%~nF.null" "%%~dpF" 
     RMDIR "%%~dpF\temp\" 
) 
+0

非常感謝您的Foxidrive,這是一種享受!你真了不起! – Coro