Board logo

标题: [文件操作] BAT怎样批量文件名称修改? [打印本页]

作者: pgssk    时间: 2013-7-11 10:36     标题: BAT怎样批量文件名称修改?

大量文件名,小弟想只把其中32这两位数变成其他的数值  求助各位大大
作者: xxpinqz    时间: 2013-7-11 11:11

  1. @echo off
  2. set/p dst=输入修改数值:
  3. if "%dst%"=="" goto :eof
  4. rem 看不准你截图上的—是啥符号,自己替换下下面的-号
  5. set "c=-"
  6. for /f "delims=" %%a in ('dir /b/a-d *%c%*.doc 2^>nul') do (
  7.     for /f "tokens=1,2* delims=%c%" %%i in ("%%a") do (
  8.         rem 显示正确后删除echo
  9.         echo ren "%%a" "%%i%c%%dst%%c%%%k"
  10.     )
  11. )
  12. pause
复制代码

作者: pgssk    时间: 2013-7-11 11:36

回复 2# xxpinqz



谢谢兄弟,我找到一串代码
:ren1-1
cls
ren *.%no2% *.[%no2%]

for %%a in (0 1 2 3 4 5 6 7 8 9) do (
for %%b in (0 1 2 3 4 5 6 7 8 9) do (
for %%c in (0 1 2 3 4 5 6 7 8 9) do (
    color %%b%%c &title %%a%%b%%c.%no2%
    echo.                                 %no1%%%a%%b%%c.%no2%
    ren *.[%no2%] %no1%%%a%%b%%c.%no2%>nul 2>nul
    if not exist *.[%no2%] cls &color 0b &echo OK!! &pause &exit
)
)
)

可是这串代码只能修改后缀名为001 002 003  ,我想让他修改后边为0001 0002 0003   请问怎么修改?
作者: 悬崖之树    时间: 2013-7-11 18:09

本帖最后由 悬崖之树 于 2013-7-11 18:10 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p dst=请输入修改值:
  3. if not defined dst goto :eof
  4. for /l %%i in (10001 1 10999) do (
  5.    set i=%%i&set i=!i:~-4!
  6.    if exist "0312-32-ph1-!i!.doc" (
  7.       echo ren "0312-32-ph1-!i!.doc" "0312-%dst%-ph1-!i!.doc"
  8.    )
  9. )
  10. pause
复制代码
如果显示正确的话,删掉前面的echo即可。
作者: 悬崖之树    时间: 2013-7-11 18:25

本帖最后由 悬崖之树 于 2013-7-11 18:27 编辑

如果word文件的文件名的后面部分(0001 这些) 是连续的,就可以用下面的代码:
  1. @echo off
  2. set n=10000
  3. :loop
  4. set /a n+=1
  5. set m=%n:~-4%
  6. if exist "0312-32-ph1-%m%.doc" (
  7.    ren "0312-32-ph1-%m%.doc" "0312-xxx-ph1-%m%.doc"
  8. ) else goto :eof
  9. goto loop
复制代码

作者: 悬崖之树    时间: 2013-7-11 18:32

本帖最后由 悬崖之树 于 2013-7-11 18:35 编辑

如果知道 要改名的文件的个数,可以用下面的代码:(以20个文件为例)
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=10000
  3. :loop
  4. set /a n+=1
  5. set m=%n:~-4%
  6. if exist "0312-32-ph1-%m%.doc" (
  7.    ren "0312-32-ph1-%m%.doc" "0312-xxx-ph1-%m%.doc"
  8.    set /a i+=1
  9.    if !i! == 20 goto :eof
  10. )
  11. goto loop
复制代码

作者: 悬崖之树    时间: 2013-7-11 18:40

回复 3# pgssk
  1. for %%a in (0 1 2 3 4 5 6 7 8 9) do (
  2. for %%b in (0 1 2 3 4 5 6 7 8 9) do (
  3. for %%c in (0 1 2 3 4 5 6 7 8 9) do (
  4. for %%d in (0 1 2 3 4 5 6 7 8 9) do (
  5. echo %%a%%b%%c%%d))))
复制代码

作者: weichenxiehou    时间: 2013-7-11 21:56

如果把32改成33:
  1. ren *.doc ????-33-*.doc
复制代码





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