标题: [文件操作] 【已解决】批处理把100个数据,分成了4个文件夹,按照一定规则排序 [打印本页]
作者: mqa3 时间: 2024-8-21 08:59 标题: 【已解决】批处理把100个数据,分成了4个文件夹,按照一定规则排序
100个数据,分成了4个文件夹(四个阶段),每个文件夹内保存了该数据的4个不同时期是数据,如何用批处理将其单独整理为按照文件名称命名的文件夹,每个文件夹下放置该文件的不同阶段的四个文件。
每个文件的命名为:阶段1_1~阶段1_100
阶段2_1~阶段2_100
阶段3_1~阶段3_100
阶段4_1~阶段4_100
合并后想要达到的效果是:阶段1_1; 阶段2_1; 阶段3_1; 阶段4_1 在同一个文件夹内。同时生成100个文件
如果可以将这些文件按照的排序按照: 阶段1_1; 阶段2_1; 阶段3_1; 阶段4_1; 阶段1_2; 阶段2_2; 阶段3_2; 阶段4_2放置到一个文件夹内,那就更好了。
谢谢大家
作者: ppll2030 时间: 2024-8-21 10:21
回复 1# mqa3
把代码保存为bat文件,跟4个文件夹放在一起。
运行后即可得到100个文件夹,每个文件夹下包含4个文件:阶段1_*; 阶段2_*; 阶段3_*; 阶段4_*
注意:::运行前记得备份数据。- @echo off
- for /l %%n in (1, 1, 100) do (
- for /f "delims=" %%i in ('dir /b /s /a-d "阶段*_*"^|findstr /irc:".*_%%n"') do (
- if not exist %%n md %%n
- move "%%i" "%%n\"
- )
- )
- pause
复制代码
作者: qixiaobin0715 时间: 2024-8-21 10:42
放到一个文件夹中并且按你所说的顺序排列,文件名要做一下改动。将1-100的顺序号移到文件名最前面,把1、2位的数字前用0补位为3位数:- @echo off
- md "NewFolder"
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /s /a-d "阶段*_*.*"') do (
- for /f "tokens=1* delims=_" %%j in ("%%~nxi") do (
- set n=00%%~nk
- set n=!n:~-3!
- copy "%%i" "NewFolder\!n!_%%j%%~xi"
- )
- )
- pause
复制代码
作者: mqa3 时间: 2024-8-21 10:57
回复 3# qixiaobin0715
感谢大神的支持,确实成功了。有个小问题合并的文件编号是从002开始的,能否调整到001开始呢。
作者: qixiaobin0715 时间: 2024-8-21 11:06
回复 4# mqa3
代码除了用0补位和移位外,别的地方并没有改动,你的源文件是从2开始的?
作者: qixiaobin0715 时间: 2024-8-22 08:40
求助时,如果牵扯到文件处理,能提供文件扩展名最好,可以精准定位到你要处理的对象,简化代码。这里假设数据文件为电子表格,xls格式,若是其它文件的话请自行修改。
楼主的第一个要求,数据不限于100个:- @echo off
- for /f "delims=" %%i in ('dir /s /b /a-d *.xls') do (
- for /f "tokens=2 delims=_" %%j in ("%%~ni") do (
- md "%%j" 2>nul
- copy "%%i" "%%j\">nul
- )
- )
- pause
复制代码
作者: mqa3 时间: 2024-8-22 13:14
回复 6# qixiaobin0715
感谢大神 @qixiaobin0715 完美解决我的问题。我坛真的卧虎藏龙,批处理真是博大精深。
作者: qixiaobin0715 时间: 2024-8-23 10:18
不是批处理博大精深,而是批处理正巧善于处理此类问题。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |