标题: [文件操作] 批处理如何把文件按4个一组放文件夹里并改名为1 2 3 4 [打印本页]
作者: laolou01 时间: 2020-11-29 19:13 标题: 批处理如何把文件按4个一组放文件夹里并改名为1 2 3 4
例如:文件夹里有400个文件 按顺序1 2 3 4 5 .....400这样下来的 如何把他们分开4个一组放到文件夹里 把1234放文件夹1(名称1234) 把5678放文件夹2(改为1234) 把9 10 11 12放文件夹3(改为1234) 类推 求大神给个代码
作者: flashercs 时间: 2020-11-29 20:56
- @echo off
- setlocal EnableDelayedExpansion
- cd /d "%~dp0"
- set /a fn=1,dn=1,groupCount=4
- if not exist "文件夹!dn!\" md "文件夹!dn!\"
- for %%A in (*) do (
- copy /y "%%A" "文件夹!dn!\"
- if !fn! geq !groupCount! (
- ren "文件夹!dn!" "!dn!"
- set /a fn=1,dn+=1
- if not exist "文件夹!dn!\" md "文件夹!dn!\"
- ) else (
- set /a fn+=1
- )
- )
- endlocal
- exit /b
复制代码
作者: qixiaobin0715 时间: 2020-11-30 07:02
for 提取文件名的顺序好像是1/10/11/12.../100/101... ,2/20/21.../200/201...
作者: qixiaobin0715 时间: 2020-12-1 10:42
本帖最后由 qixiaobin0715 于 2020-12-1 11:08 编辑
如果是数字命名的话,文件扩展名是txt,这样应当可以:- @echo off
- md 1,2,3,4
- setlocal EnableDelayedExpansion
- set /a FlolderNames=0,n=0,m=0
- for /l %%a in (1,1,400) do (
- set /a x=%%a%%4
- set /a y=%%a%%16
- set /a n+=1
- set /a FileNames=n+m
- if !x!==1 (
- set /a FlolderNames+=1
- )
- move %%a.txt !FlolderNames!\!FileNames!.txt
- if !x!==0 (
- set n=0
- )
- if !y!==0 (
- set FlolderNames=0
- set /a m+=4
- )
- )
- pause
复制代码
作者: terse 时间: 2020-12-1 14:28
本帖最后由 terse 于 2020-12-1 23:01 编辑
数字命名的话 这样算法呢
不是数字命名的话 递加一下即可
改名称1234 这个怎么理解的 重命名吗- @echo off&setlocal enabledelayedexpansion
- md 1,2,3,4 >nul 2>nul
- for /l %%i in (1,1,400) do (
- set /a "n=(%%i-1)/4%%4+1"
- move "%%i.txt" "!n!\"
- )
- pause
复制代码
重命名处理 假设文件后缀txt- @echo off&setlocal enabledelayedexpansion
- md 1,2,3,4 >nul 2>nul
- for /l %%i in (1,1,400) do (
- set /a "n=(%%i-1)/4%%4+1"
- set /a "_!n!+=1"
- for %%j in (_!n!) do move "%%i.txt" "!n!\!%%j!.txt"
- )
- pause
复制代码
作者: qixiaobin0715 时间: 2020-12-1 14:54
我的理解,楼主的意思是:
将400个文件按顺序分别4个4个的移到1-4文件夹并按数字顺序重命名,最终结果1-4文件夹的文件名都是1-100的数字。
作者: qixiaobin0715 时间: 2020-12-7 14:01
回复 5# terse
第二个for不用也可以啊。- @echo off&setlocal enabledelayedexpansion
- md 1,2,3,4 >nul 2>nul
- for /l %%i in (1,1,400) do (
- set /a "n=(%%i-1)/4%%4+1"
- set /a "_!n!+=1"
- set /a str=_!n!
- move "%%i.txt" "!n!\!str!.txt"
- )
- pause
复制代码
作者: laolou01 时间: 2020-12-23 16:09
回复 5# terse
12 3 64 姜国.JPG 12364 王天.JPG 165 天天.txt 空格有的1格有的2格3格 文件有JPG有TXT的 如何批量去除掉他们的空格 有的是数字间有空格 也有数字和文字间的空格 改好的最终显示为12364姜国.JPG 12364王天.JPG 165天天.txt求大神给个代码
作者: terse 时间: 2020-12-23 17:06
显示正确的话 去掉代码第五行的echo,- @echo off&setlocal enabledelayedexpansion
- set ext=*.txt *.jpg
- for /f "delims=" %%i in ('dir /b /a-d %ext%') do (
- set filename=%%i
- echo,ren "%%i" "!filename: =!"
- )
- pause
复制代码
作者: laolou01 时间: 2020-12-23 19:00
回复 9# terse
哥哥 这个能帮忙看看吗 12 3 64X 姜国.JPG 12364 王天.JPG 165 天天.txt 空格有的1格有的2格3格 文件有JPG有TXT的 如何批量去除掉他们的空格 有的是数字间有空格 也有数字和文字间的空格 改好的最终显示为12364X姜国.JPG 12364王天.JPG 165天天.txt求大神给个代码
作者: terse 时间: 2020-12-23 20:57
本帖最后由 terse 于 2020-12-23 22:22 编辑
回复 terse
哥哥 这个能帮忙看看吗 12 3 64X 姜国.JPG 12364 王天 ...
laolou01 发表于 2020-12-23 19:00
没明白你的意思,九楼代码不行吗
加一行代码应该可行了- @echo off&setlocal enabledelayedexpansion
- set ext=*.txt *.jpg
- for /f "delims=" %%i in ('dir /b /a-d %ext%') do (
- set "filename=%%i"
- set "filename=!filename: =!"
- echo;ren "%%i" "!filename: =!"
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |