[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]用批处理方式写一个文本批量改名程序

用批处理方式写一个文本批量改名程序,要求用文件名加文本的第一行或有效行,如果第一行是空行,则顺延到第二行,做为新的文件名。我的文件目录是e:\books全集\books\找回\。我用AI帮我写了几个程序,没有一个运行成功的,求大神给看一下,错在那里。
第一个
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. pushd e:\books 全集\books\找回\
  4. for /f "delims=" %%i in ('dir /b *.txt') do (
  5.     set "line=%%i"
  6.     for /f "tokens=1* delims=:" %%a in ('findstr /n. "%%i"') do (
  7.         if "%%a" neq "" (
  8.             set "newname=%%i -!line!:~0,1!"
  9.             ren "%%i" "!newname!"
  10.             goto :break
  11.         )
  12.     )
  13.     :break
  14. )
  15. popd
复制代码
第二个
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "sourceDir=e:\books全集\books\找回\"
  4. for %%f in ("%sourceDir%*.txt") do (
  5.     set "newFileName=%%~nf"
  6.     for /f "delims=" %%a in ('type "%%f" ^| findstr /b /c:"[^ ]"') do (
  7.         set "newFileName=%%~na"
  8.         goto rename
  9.     )
  10. )
  11. :rename
  12. ren "%%f" "!newFileName!.txt"
  13. endlocal
复制代码
第三个
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "sourceDir=e:\books全集\books\找回\"
  4. set "ext=txt"  REM 更改为你的文件扩展名
  5. for /r "%sourceDir%" %%f in (*.%ext%) do (
  6.     set "filename=%%f"
  7.     set "newname="
  8.    
  9.     for /f "tokens=*" %%a in ('type "%%f"') do (
  10.         if "!newname!"=="" (
  11.             echo %%a | findstr /c:" " > nul
  12.             if errorlevel 1 (
  13.                 set "newname=%%a"
  14.             )
  15.         ) else (
  16.             set "newname=%%a"
  17.             goto :renamed
  18.         )
  19.     )
  20. :renamed
  21.     if not "!newname!"=="" (
  22.         ren "!filename!" "!newname!.%ext%"
  23.     )
  24. )
  25. endlocal
复制代码
第四个
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. rem 指定文件目录
  4. set "directory=e:\books全集\books\找回\"
  5. rem 遍历目录中的文件
  6. for /f "delims=" %%f in ('dir /b /a-d "%directory%*.txt"') do (
  7.     set "file=%%f"
  8.     set "newName="
  9.     rem 读取文件的第一行
  10.     for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%directory%\!file!"') do (
  11.         if "%%a" neq "1" (
  12.             set "newName=!newName!%%b"
  13.             goto rename
  14.         )
  15.     )
  16.     rem 如果第一行是空行,读取第二行
  17.     for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%directory%\!file!" 2^>nul') do (
  18.         set "newName=!newName!%%b"
  19.         goto rename
  20.     )
  21.     :rename
  22.     ren "%directory%\!file!" "!newName!.txt"
  23. )
  24. pause
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

RE: (已解决)用批处理方式写一个文本批量改名程序

谢谢  77七 完美解决。

TOP

返回列表