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

[文本处理] 【已解决】求助:批处理给同名文件文件名添加序号

本帖最后由 lj670 于 2023-7-10 14:16 编辑

大神的批处理文件,把文件名导入文本,如何改成二次运行后,同名文件在文件名后添加序号,例如,运行后获取11.txt文本文件,再次运行获取11(1).txt文本文件
  1. @echo off
  2. cd /d "%~dp0"
  3. set "OutFile=11.txt"
  4. (for /f "delims=" %%i in ('dir /b /a-d *.*') do (
  5.     if "%%i" neq "%OutFile%" (
  6.         echo,%%~ni
  7.     )
  8. ))>"%OutFile%"
复制代码
1

评分人数

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

回复 9# 77七


    非常棒!!!多次运行获得文件会依次排序,完美!谢谢!!

TOP


一。代码用批处理脚本文件名存盘(记事本ANSI编码),如 a.cmd,不要放在目标文件目录
二。'输出目录' 和 '目标文件目录' 以及 输出文件'前缀名' 皆可修改
三。输出文件名序号从(1)开始
三。脚本运行结尾用文件资源管理器锚定输出文件位置
  1. @echo off
  2. set "outDir=D:\输出目录"
  3. set "srcDir=D:\目标文件目录"
  4. if not exist "%outDir%" (md "%outDir%" 2>nul)
  5. cd /d "%outDir%"
  6. for /f %%k in ('dir /b/a-d "前缀名*.txt" 2^>nul^|find /v /c "" ') do (set/a "n=%%k+1")
  7. set "outFile=%outDir%\前缀名(%n%).txt"
  8. cd /d "%srcDir%" 2>nul
  9. (for /f "delims=" %%i in ('dir /b /a-d *.*') do echo,%%~ni)>"%outFile%"
  10. if exist "%outFile%" (explorer.exe /select, "%outFile%")
  11. exit/b
复制代码
1

评分人数

    • lj670: 辛苦了 谢谢!!技术 + 1

TOP

  1. @echo off
  2. set str=list
  3. set #"%str%.txt"=1
  4. if exist "%str%.txt" (
  5. for /l %%l in (2,1,1000) do (
  6. set #"%str%(%%l).txt"=1
  7. if not exist "%str%(%%l).txt" (
  8. set "file=%str%(%%l).txt"
  9. goto :next
  10. )
  11. )
  12. ) else (
  13. set "file=%str%.txt"
  14. )
  15. :next
  16. (for /f "delims=" %%i in ('dir /b /a-d ^|find /v "%~nx0"') do (
  17. if not defined #"%%i" (
  18. echo %%~ni
  19. )
  20. ))>"%file%"
  21. pause
复制代码
1

评分人数

    • lj670: 非常棒!!!技术 + 1
bat小白,请多指教!谢谢!

TOP

回复 7# lj670


    丢到terminal里连用,或者代码开头加个:start,结尾加个pause和goto
QQ 1980286392

TOP

回复 5# BingjianREMIX


    第一次运行得到11.txt文件,第二次运行得到11 () .txt文件,可以得到2个不同名的文本文件,谢谢

TOP

回复 5# BingjianREMIX


    连用即可
QQ 1980286392

TOP

本帖最后由 BingjianREMIX 于 2023-7-8 17:49 编辑

回复 4# lj670
  1. @echo off
  2. cd /d "%~dp0"
  3. if not exist 11.txt (
  4.     set /a "fx=0"
  5. )
  6. if exist "11.txt" (
  7.    set /a "fx=0"
  8.    set /a "b=1"
  9.    set /a "fx=%fx%+1"
  10.    set "OutFile=11 (%fx%) .txt"
  11. )
  12. if "%fx%" equ "0" (
  13.        set "OutFile=11.txt"
  14. )
  15. :1
  16. (for /f "delims=" %%i in ('dir /b /a-d *.*') do (
  17.     if "%%i" neq "%OutFile%" (
  18.         echo,%%~ni
  19.     )
  20. ))>"%OutFile%"
  21. if exist "11 (0) .txt" (
  22.    ren "11 (0) .txt" "11 (1) .txt"
  23. )
复制代码
1

评分人数

    • lj670: 感谢感谢技术 + 1
QQ 1980286392

TOP

回复 3# BingjianREMIX


    运行后得到11 (0) .txt文本文件,再次运行只会覆盖这个文件,没有添加序号重命名,辛苦了谢谢

TOP

回复 2# BingjianREMIX


    一些不对
  1. @echo off
  2. :start
  3. cd /d "%~dp0"
  4. set /a "fx=0"
  5. set "OutFile=11 (%fx%) .txt"
  6. if exist "11 (0) .txt" set /a "fx=%fx%+1"
  7. (for /f "delims=" %%i in ('dir /b /a-d *.*') do (
  8.     if "%%i" neq "%OutFile%" (
  9.         echo,%%~ni
  10.     )
  11. )
  12. if "%fx%" equ "0" (
  13.        set "OutFile=11.txt"
  14. )
  15. )>"%OutFile%"
  16. pause
  17. goto :start
复制代码
1

评分人数

QQ 1980286392

TOP

回复 1# lj670
  1. @echo off
  2. :start
  3. cd /d "%~dp0"
  4. set /a "fx=0"
  5. set "OutFile=11 (%fx%) .txt"
  6. if exist "11 (0) .txt" set /a "fx=%fx%+1"
  7. echo %fx%
  8. (for /f "delims=" %%i in ('dir /b /a-d *.*') do (
  9.     if "%%i" neq "%OutFile%" (
  10.         echo,%%~ni
  11.     ) else if "%fx%"=="0" (
  12.        set "OutFile=11.txt"
  13. ))>"%OutFile%"
  14. )
  15. pause
  16. goto :start
复制代码
1

评分人数

QQ 1980286392

TOP

返回列表