Board logo

标题: [文件操作] 求助批处理比较复杂修改文件夹名称的操作 [打印本页]

作者: 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


目录结构有点抽象,请在待处理的文件夹下执行命令:
  1. tree /f > 1.txt
复制代码
如需上传截图,请用图床:
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
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. for /f "delims=" %%a in ('dir /b /ad') do (
  5.     echo 正在处理文件夹:%%a
  6.     set z=0
  7.     set p=0
  8.     set k=0
  9.     for /f "delims=" %%b in ('dir /b /a-d "%%a"') do (
  10.         for /f "tokens=1,2 delims=-_" %%c in ("%%b") do (
  11.             set "X=%%c"
  12.             for /f "delims=0123456789" %%i in ("%%d") do (
  13.                 call :GetY %%i %%d
  14.             )
  15.         )
  16.         if !X! gtr !Y! (
  17.             set /a z+=1
  18.         ) else if !X! lss !Y! (
  19.             set /a k+=1
  20.         ) else (
  21.             set /a p+=1
  22.         )
  23.     )
  24.     ren "%%a" "%%a=zpk=!z!-!p!-!k!"
  25. )
  26. goto :eof
  27. :GetY
  28. for /f "delims=%1" %%j in ("%2") do (
  29.     set "Y=%%j"
  30. )
  31. goto :eof
复制代码

作者: iii888iii    时间: 2022-3-21 21:57

回复 5# Batcher


    感谢管理的热心帮助, 这么老的网站还能帮上忙.难以想象.   我是最喜欢用bat解决问题的.体积小,简单快捷.
作者: iii888iii    时间: 2022-3-21 21:58

非常好用.非常好用.非常好用.




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2