批量移动文件和重命名。 50
如题。现在一个文件夹下有:A_001.jpg,A_002.jpg,A_003.jpg,A_004.jpg,……A_013.jpg,A_014.jpg……A_113.jpg...
如题。现在一个文件夹下有:
A_001.jpg,A_002.jpg,A_003.jpg,A_004.jpg,……A_013.jpg,A_014.jpg……A_113.jpg,A_114.jpg……
B_001.jpg(其他和A相同)……
C_001.jpg……
D_001.jpg(都和A相同)
现在要把这些文件按后面的编号放到不同的文件夹下去,例如:
A_001到A_012,
B_001到B_012,
C_001到C_012,
D_001到D_012
放到同一个文件夹下,其他也一样
求一个Bat批处理。
感谢你的回答,我现在是这样做的
md 0000
@echo off&setlocal EnableDelayedExpansion
for %%i in (*002.* *003.* *004.*) do (
move "%%" 0000)
给我改进一下。因为要移动的编号段不是固定的,但我不想一个一个列出来。
另外,还要按照B,D,A,C的顺序,给指定号段的文件重新编号成001,002,003…… 展开
A_001.jpg,A_002.jpg,A_003.jpg,A_004.jpg,……A_013.jpg,A_014.jpg……A_113.jpg,A_114.jpg……
B_001.jpg(其他和A相同)……
C_001.jpg……
D_001.jpg(都和A相同)
现在要把这些文件按后面的编号放到不同的文件夹下去,例如:
A_001到A_012,
B_001到B_012,
C_001到C_012,
D_001到D_012
放到同一个文件夹下,其他也一样
求一个Bat批处理。
感谢你的回答,我现在是这样做的
md 0000
@echo off&setlocal EnableDelayedExpansion
for %%i in (*002.* *003.* *004.*) do (
move "%%" 0000)
给我改进一下。因为要移动的编号段不是固定的,但我不想一个一个列出来。
另外,还要按照B,D,A,C的顺序,给指定号段的文件重新编号成001,002,003…… 展开
2个回答
展开全部
再怎么补充也不能明白你的意思,也不Hi一下,又没别人来答,我既插了嘴,就按我的设想写一个,如不合意我也尽力了。
首先假定你文件带的号码不会超过999,然后如果超过500就建10个文件夹,否则建5个文件夹(这种假定对写代码来说是增加麻烦哦,还得先查多少文件)文件夹以号码起止号为名,移入的文件是按号段平均放入的(最后一个文件夹里就可能不足平均数)批处理是放这些文件同位置的
@echo off&color f1
setlocal EnableDelayedExpansion
echo.正在处理...
for /f %%i in ('dir/a-d A_*.jpg^|find "个文件"')do set fn=%%i
if "%fn%" gtr "500" (set "dn=10")else set "dn=5"
set/a dfn=fn/dn
set/a ydfn=dfn*dn
if %ydfn% lss %fn% set/a dfn+=1
for /L %%a in (1,1,%dn%)do (
set/a d1=%%a-1
set/a d1=!d1!*!dfn!+1
set/a dm=d1+dfn-1
if !dm! gtr %fn% set "dm=%fn%"
set d01=00!d1!
set d0m=00!dm!
if not exist "!d01:~-3!-!d0m:~-3!" md "!d01:~-3!-!d0m:~-3!"
for /L %%b in (!d1!,1,!dm!)do (
set d0=00%%b
move ?_!d0:~-3!.jpg !d01:~-3!-!d0m:~-3!\ 2>nul
)
)
echo.处理完毕!&ping 127.1>nul
首先假定你文件带的号码不会超过999,然后如果超过500就建10个文件夹,否则建5个文件夹(这种假定对写代码来说是增加麻烦哦,还得先查多少文件)文件夹以号码起止号为名,移入的文件是按号段平均放入的(最后一个文件夹里就可能不足平均数)批处理是放这些文件同位置的
@echo off&color f1
setlocal EnableDelayedExpansion
echo.正在处理...
for /f %%i in ('dir/a-d A_*.jpg^|find "个文件"')do set fn=%%i
if "%fn%" gtr "500" (set "dn=10")else set "dn=5"
set/a dfn=fn/dn
set/a ydfn=dfn*dn
if %ydfn% lss %fn% set/a dfn+=1
for /L %%a in (1,1,%dn%)do (
set/a d1=%%a-1
set/a d1=!d1!*!dfn!+1
set/a dm=d1+dfn-1
if !dm! gtr %fn% set "dm=%fn%"
set d01=00!d1!
set d0m=00!dm!
if not exist "!d01:~-3!-!d0m:~-3!" md "!d01:~-3!-!d0m:~-3!"
for /L %%b in (!d1!,1,!dm!)do (
set d0=00%%b
move ?_!d0:~-3!.jpg !d01:~-3!-!d0m:~-3!\ 2>nul
)
)
echo.处理完毕!&ping 127.1>nul
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@ECHO OFF & REM ========代码开始========
REM 此脚本应放在要处理的目录下.
REM 此脚本仅适用于形如"任意_编号.扩展名"的文件.
REM 主要功能由函数uMove、uRen实现, 用法如下:
REM CALL :uMove 数甲 数乙 "文件夹丙"
REM 把编号位于数甲、数乙之间的文件移动到文件夹丙中,
REM 注意数甲应小于或等于数乙,且数字要3位对齐.
REM CALL :uRen "文件夹丁" "亥 子 丑"
REM 把文件夹丁中的文件按亥、子、丑的顺序重命名,
REM 名字中不含亥、子、丑中任意一个的文件将不作处理,
REM 重命名总是从编号0001开始,请确认处理前没有这种文件.
REM ========根据需要更改以下代码========
SET "uExt=.jpg"
ECHO 要处理"%uExt%"文件,请稍后. . .
CALL :uMove 001 012 "0000"
CALL :uMove 014 014 "0000"
CALL :uRen "0000" "b d a c"
ECHO 处理结束,按任意键退出. . .
PAUSE>NUL & GOTO :EOF
REM ========如下是函数实现,谨慎更改========
:uMove
MD "%~3" 2>NUL
FOR /F "tokens=1,2 delims=_." %%I IN ('DIR /B *%uExt%') DO (
IF "%%J" GEQ "%1" IF "%%J" LEQ "%2" (MOVE /Y "%%I_%%J%uExt%" "%~3" 2>NUL))
GOTO :EOF
:uRen
SETLOCAL EnableDelayedExpansion & (PUSHD "%~1" || GOTO :EOF)
SET /A n=0
FOR %%I IN (%~2) DO FOR /F "delims=" %%J IN ('DIR /B /O:N *%%I*%uExt%') DO (
SET /A n+=1
SET "m=000!n!"
REN "%%~J" "!m:~-4!%uExt%")
POPD & ENDLOCAL & GOTO :EOF
REM ========代码结束========
REM 此脚本应放在要处理的目录下.
REM 此脚本仅适用于形如"任意_编号.扩展名"的文件.
REM 主要功能由函数uMove、uRen实现, 用法如下:
REM CALL :uMove 数甲 数乙 "文件夹丙"
REM 把编号位于数甲、数乙之间的文件移动到文件夹丙中,
REM 注意数甲应小于或等于数乙,且数字要3位对齐.
REM CALL :uRen "文件夹丁" "亥 子 丑"
REM 把文件夹丁中的文件按亥、子、丑的顺序重命名,
REM 名字中不含亥、子、丑中任意一个的文件将不作处理,
REM 重命名总是从编号0001开始,请确认处理前没有这种文件.
REM ========根据需要更改以下代码========
SET "uExt=.jpg"
ECHO 要处理"%uExt%"文件,请稍后. . .
CALL :uMove 001 012 "0000"
CALL :uMove 014 014 "0000"
CALL :uRen "0000" "b d a c"
ECHO 处理结束,按任意键退出. . .
PAUSE>NUL & GOTO :EOF
REM ========如下是函数实现,谨慎更改========
:uMove
MD "%~3" 2>NUL
FOR /F "tokens=1,2 delims=_." %%I IN ('DIR /B *%uExt%') DO (
IF "%%J" GEQ "%1" IF "%%J" LEQ "%2" (MOVE /Y "%%I_%%J%uExt%" "%~3" 2>NUL))
GOTO :EOF
:uRen
SETLOCAL EnableDelayedExpansion & (PUSHD "%~1" || GOTO :EOF)
SET /A n=0
FOR %%I IN (%~2) DO FOR /F "delims=" %%J IN ('DIR /B /O:N *%%I*%uExt%') DO (
SET /A n+=1
SET "m=000!n!"
REN "%%~J" "!m:~-4!%uExt%")
POPD & ENDLOCAL & GOTO :EOF
REM ========代码结束========
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询