我已经在这几天挣扎了几天,因为我不是很懂代码。基本上,我收到了一个巨大的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值只是临时的。
答案 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\"
)