我在一个目录中有一个文件夹,里面有数百个压缩文件夹,里面还有很多文件。例如,
文件夹
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
有人可以建议我如何在批处理文件
中完成答案 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
将所有输出(stdout
和stderr
)重定向到Nul
文件,从而有效地使程序静音。