繁体   English   中英

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

[英]How to attach the zipped folder names to all the files inside it in 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

谁能建议我如何在批处理文件中完成

@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 如果此格式可能更改,则需要对代码进行调整。

这是我写的一个简短脚本,可以满足您的需求

@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文件,从而有效地使程序静音。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM