导出多个TAR以维护文件结构和名称

时间:2014-01-17 00:05:45

标签: batch-file cmd

我已经在这几天挣扎了几天,因为我不是很懂代码。基本上,我收到了一个巨大的zip文件,其中包含有人需要访问的报告。提取后,它具有完整的目录结构,所有文件都是.tar.gz文件。我有一个工作批处理文件,将所有.tar.gz解压缩到.tar,然后删除.gz。

我现在面临的问题是,在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值只是临时的。

1 个答案:

答案 0 :(得分: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\"
)