如何将压缩文件夹名称附加到批处理文件中的所有文件中

时间:2015-07-02 12:05:47

标签: batch-file

我在一个目录中有一个文件夹,里面有数百个压缩文件夹,里面还有很多文件。例如,

文件夹
   cs2-20150613-6014-0000-的 201071 的.zip
        cs2-20150613-abc.bin
        cs2-20150613-xyz.bin

cs2-20150614-6014-0000-的 201066 的.zip
        cs2-20150614-abc.bin
        cs2-20150614-xyz.bin

我想在提取后将文件夹名称的最后6位数附加到所有文件,
        cs2-20150613-abc.bin-的 201071
        cs2-20150613-xyz.bin-的 201071

有人可以建议我如何在批处理文件

中完成

2 个答案:

答案 0 :(得分:0)

@echo off

for /F "tokens=1,2,5 delims=-." %%a in ('dir /B *.zip') do (
   ren %%a-%%b-*.bin %%a-%%b-*.bin.%%c
)

此代码假定显示的格式是固定的:cs2-YYYYMMDD-xxxx-xxxx-######.zip。如果此格式可能会更改,则需要对代码进行调整。

答案 1 :(得分:0)

这是我写的一个应该做你需要的简短剧本

@echo off & setlocal enabledelayedexpansion

for %%a in (*.zip) do (
    7z x -o"%temp%\%%~na" "%%a" > Nul <&2
    set "suffix=%%~na"
    set "suffix=!suffix:~-6!"
    for %%b in (%temp%\%%~na\*) do move /Y "%%b" "%cd%\%%~nxb-!suffix!" > Nul <&2
    rd /s /q "%temp%\%%~na" 
)

要求您在路径上7z提取.zip文件夹的压缩文件。

后缀补充说,提取的文件总是在.zip文件的扩展名之前的6个字符,忽略天气或不是数字。

此代码使用惯用语> Nul <&2将所有输出(stdoutstderr)重定向到Nul文件,从而有效地使程序静音。