标题: [文件操作] 求助批处理比较复杂修改文件夹名称的操作 [打印本页]
作者: iii888iii 时间: 2022-3-18 18:38 标题: 求助批处理比较复杂修改文件夹名称的操作
目录结构:
多个文件夹名称随机
每个
下层"随机文件夹里面",有n个文件,
规范如下
案例1
a b------------------------------------------------------------
3-2案例1(注)_中文_2018年04月15日01时45分_中文_中文_663793_180403_298[忽略].xlsx
案例2
a b------------------------------------------------------------
1-1案例2(注)_中文_2011年04月18日01时45分_中文_中文_663793_180403_298[忽略].xlsx
案例3
a b------------------------------------------------------------
1-2案例3(注)_中文_2018年04月11日01时45分_中文_中文_663793_180403_298[忽略].xlsx
a=个位数字
b=个位数字
注: b 后面接着是中文(或者字母)
-------------------------------------------
需求:
计算每个文件的ab差值:
a-b>0.5 的数量. 定义为.z (案例1:3-2>0.5, z的数量+1)
a-b=0 的数量 定义为.p (案例2:1-1=0, p的数量+1)
b-a>0.5 的数量 定义为.k (案例3:2-1>0.5, k的数量+1)
执行:
假设 原文件夹名称=b1
修改,文件夹名称为: b1=zpk=1-1-1
上面有3个案例且数量都是1个,于是,修改该下层文件夹名称为 b1=zpk=1-1-1
作者: Batcher 时间: 2022-3-18 19:19
回复 1# iii888iii
目录结构有点抽象,请在待处理的文件夹下执行命令:复制代码
如需上传截图,请用图床:
http://bbs.bathome.net/thread-60985-1-1.html
如需上传附件,请用阿里云盘或百度网盘。
作者: iii888iii 时间: 2022-3-18 21:16
卷 c2t 的文件夹 PATH 列表
卷序列号为 08CE-0C03
C:.
│ 1.txt
│ 统计b1.bat
│ 说明.txt
│
├─c1All随机文件夹名称 实例1 20220311032854
│ │ 5-1案例4(注)_中文_2011年04月18日01时45分_中文_中文_663793_180403_298[忽略].xlsx
│ │
│ └─b1
│ 1-1案例2(注)_中文_2011年04月18日01时45分_中文_中文_663793_180403_298[忽略].xlsx
│ 1-2案例3(注)_中文_2018年04月11日01时45分_中文_中文_663793_180403_298[忽略].xlsx
│ 3-2案例1(注)_中文_2018年04月15日01时45分_中文_中文_663793_180403_298[忽略].xlsx
│
└─随机文件夹名称 案例 手工修改示范 20220311032852
│ 5-1案例4(注)_中文_2011年04月18日01时45分_中文_中文_663793_180403_298[忽略].xlsx
│
└─b1=zpk=1-1-1
1-1案例2(注)_中文_2011年04月18日01时45分_中文_中文_663793_180403_298[忽略].xlsx
1-2案例3(注)_中文_2018年04月11日01时45分_中文_中文_663793_180403_298[忽略].xlsx
3-2案例1(注)_中文_2018年04月15日01时45分_中文_中文_663793_180403_298[忽略].xlsx
作者: iii888iii 时间: 2022-3-20 10:15
大神能帮忙一下吗
作者: Batcher 时间: 2022-3-20 12:49
回复 3# iii888iii
测试之前请注意做好备份
请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ- @echo off
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
- for /f "delims=" %%a in ('dir /b /ad') do (
- echo 正在处理文件夹:%%a
- set z=0
- set p=0
- set k=0
- for /f "delims=" %%b in ('dir /b /a-d "%%a"') do (
- for /f "tokens=1,2 delims=-_" %%c in ("%%b") do (
- set "X=%%c"
- for /f "delims=0123456789" %%i in ("%%d") do (
- call :GetY %%i %%d
- )
- )
- if !X! gtr !Y! (
- set /a z+=1
- ) else if !X! lss !Y! (
- set /a k+=1
- ) else (
- set /a p+=1
- )
- )
- ren "%%a" "%%a=zpk=!z!-!p!-!k!"
- )
- goto :eof
-
- :GetY
- for /f "delims=%1" %%j in ("%2") do (
- set "Y=%%j"
- )
- goto :eof
复制代码
作者: iii888iii 时间: 2022-3-21 21:57
回复 5# Batcher
感谢管理的热心帮助, 这么老的网站还能帮上忙.难以想象. 我是最喜欢用bat解决问题的.体积小,简单快捷.
作者: iii888iii 时间: 2022-3-21 21:58
非常好用.非常好用.非常好用.
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |