标题: [文本处理] 求助BAT脚本批量处理多个文件,分拣成多个文件夹 [打印本页]
作者: asy666 时间: 2022-9-12 12:49 标题: 求助BAT脚本批量处理多个文件,分拣成多个文件夹
如题
文件夹下有多个子文件夹,每个子文件夹下有1000-2000个文件,已音频为主。
效果
文件夹-子文件1(1600个音频)子文件2(2600个音频)
想直接把子文件下的音频分成每500个分成一个文件夹,生成的文件夹最好带标号,如(0001-0499)(0500-0999)(1000-1499)这样的格式
求大神帮忙写个代码,本人小白一个,只能求助各位大神了
作者: hfxiang 时间: 2022-9-12 18:39
本帖最后由 hfxiang 于 2022-9-13 08:13 编辑
- @echo off
- rem 保存为ANSI格式
- setlocal enableDelayedExpansion
- set "Source_Dir=D:\源文件夹"
- set "Target_Dir=D:\目标文件夹"
- set /a Fn=-1
- set /a Dst=100
- for /f "usebackq delims=" %%a in (`dir "%Source_Dir%" /a-d /s /b`) do (
- set /a Fn+=1
- set /a Dname1=!Fn!%%Dst
- set /a Dname2=Dname1*Dst
- if !Dname1! EQU !Dname2! (
- set /a Dname2=Fn+Dst-1
- set Dname1=0000!Fn!
- set Dname1=!Dname1:~-4!
- set Dname2=0000!Dname2!
- set Dname2=!Dname2:~-4!
- set Dname=!Dname1!-!Dname2!
- echo;mkdir "%Target_Dir%!Dname!"
- )
- set Fname=0000!Fn!
- set Fname=!Fname:~-4!
- echo;move "%%~fa" "%Target_Dir%\!Dname!\!Fname!%%~xa"
- )
- endlocal
- exit /b
复制代码
作者: asy666 时间: 2022-10-15 09:39
hfxiang 发表于 2022-9-12 18:39
这个好像不行呀,或者是我不会用,我之前用的是这个,想改进一下
@echo off&setlocal enabledelayedexpansion
set m=1
(for %%a in (*) do (
set/a "n+=1,1/(500*m-n+1)"||(set/am+=1)
md !m!&move "%%a" .\!m!\
))2>nul
作者: hfxiang 时间: 2022-10-15 10:34
回复 3# asy666
需要把19行及23行的“echo;”删除,俺测试时加上后,上传时忘记删除了
作者: hfxiang 时间: 2022-10-15 10:41
另外第7行的set /a Dst=100,需要修改为set /a Dst=500(也可以修改为你想要的任意文件个数)
作者: qixiaobin0715 时间: 2022-10-16 08:39
本帖最后由 qixiaobin0715 于 2022-10-17 09:43 编辑
将bat文件保存为ANSI编码,在主文件夹中运行:- @echo off
- setlocal enabledelayedexpansion
- for /d %%i in (*) do (
- pushd "%%i"
- set /a m=0,n=0
- for /f "delims=" %%j in ('dir /b /a-d') do (
- set /a n+=1
- if !m! lss !n! (
- set /a m+=500
- set NewFolder=!n!-!m!
- md "!NewFolder!"
- )
- move "%%j" "!NewFolder!"
- )
- popd
- )
- pause
复制代码
第9行中的500,为分组数,可以根据需要自行修改。
未统一新建文件夹中的数字位数而使用的是自然数,若需要可使用2楼提供的有关代码修改。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |