Board logo

标题: [文本处理] 【已解决】批处理怎么按照txt名字增加序列号 [打印本页]

作者: 8532200    时间: 2020-7-25 09:49     标题: 【已解决】批处理怎么按照txt名字增加序列号

本人对批处理只是小白中的小白。。。非常感谢各位大大的帮助。。。

在百度搜索了一下。。bat 根据txt文件名生成序列文件   没有任何结果

特地来求助


成功后给予一点小小感谢。。。

以下是问题

我有一大堆文件夹

里面都是一些数字txt

求怎么按照txt文件名创建空白的序号txt,如果生成过程会遇到重名问题无法解决。可以生成其他格式文件

例如文件夹里有33.TXT

那么就生成33个txt文件或者JPG格式文件
文件名是


1.TXT
2.TXT
3.TXT
4.TXT
5.TXT
6.TXT
7.TXT
8.TXT
9.TXT
10.TXT



一直到33.txt,这里有可能遇到重名问题,所以生成例如JPG格式也可以

最好可以包括子文件夹,不可以也没关系。。。感激不尽


如果可以顺便改动一下。多写一个生成结果是

001.TXT
002.TXT
003.TXT
004.TXT
005.TXT
006.TXT
007.TXT
008.TXT
009.TXT
010.TXT
一直到033的就更感谢了。。。(写了我就可以对比两个代码有啥不同悄悄学习一下。这个太不好意思说了)
作者: smss    时间: 2020-7-25 11:19

本帖最后由 smss 于 2020-7-25 11:27 编辑
  1. @Echo off&SetLocal EnableDelayedExpansion&set n=0
  2. for /r %%i in (*.txt)do set/a n+=1&ren "%%i" "%%~ni!n!%%~xi"
  3. pause
复制代码
  1. @Echo off&SetLocal EnableDelayedExpansion&set n=1000
  2. for /r %%i in (*.txt)do set/a n+=1&ren "%%i" "%%~ni!n:~-3!%%~xi"
  3. pause
复制代码
论坛有很多实例和教程

SetLocal EnableDelayedExpansion是变量延迟 我们还可以使用call达到这个效果
n=1000这样循环中每多出一个TXT就会加1 变为1001 1002 再截取后3位数正是我们需要的
作者: 8532200    时间: 2020-7-25 11:51

论坛有很多实例和教程

SetLocal EnableDelayedExpansion是变量延迟 我们还可以使用call达到这个效果
n= ...
smss 发表于 2020-7-25 11:19



   实测失败。。。。运行后只在数字后面加了个1.我默认ansi格式

我试试子文件夹运行吧

感谢大大回复。。大大能不能把支付宝留下
作者: 8532200    时间: 2020-7-25 11:54

论坛有很多实例和教程

SetLocal EnableDelayedExpansion是变量延迟 我们还可以使用call达到这个效果
n= ...
smss 发表于 2020-7-25 11:19



    子文件夹实测也只是在数字后面加了个1.我新建的文件名是33.txt,运行后变33001了,第二个代码

正确应该是创建33个001开始排序的txt文件
作者: 8532200    时间: 2020-7-25 12:39

论坛有很多实例和教程

SetLocal EnableDelayedExpansion是变量延迟 我们还可以使用call达到这个效果
n= ...
smss 发表于 2020-7-25 11:19



    是按照文件名生成几十个或者几个按序号递增的文件。因为有可能重名。所以可以生成其他格式
作者: FOR    时间: 2020-7-26 00:09

问题交代不清楚,
如果文件夹里有个33.txt,还有个50.txt ,那是不是要新建83个txt文件?
其中33和50重名了具体怎么处理?是新建33.jpg、50.jpg还是所有的都改为jpg?还是跳过这两个序号,只新建81个?
如果文件夹中包含不是纯数字的txt文件怎么处理?
还有你之前文件夹中的txt文件名是否含有数字0开头的文件名?
作者: 8532200    时间: 2020-7-26 00:16

问题交代不清楚,
如果文件夹里有个33.txt,还有个50.txt ,那是不是要新建83个txt文件?
其中33和50重名 ...
FOR 发表于 2020-7-26 00:09



    感谢回复。。文件夹里面不可能有两个txt的。。。但是数字确是不固定的。。目前只需求1.2.3.4。5这种生成。。。顺便求001开头的只是防备以后需要

文件夹里面只有纯数字txt。。。数字目前不会超过一千。。之所以说生成JPG是怕重名。。。如果可以直接生成txt自然最好


文件夹中的txt文件名是否含有数字0开头的文件名(不会。)

每次运行前我都需要反复检查各个文件夹的txt文件名称
作者: FOR    时间: 2020-7-26 06:38

回复 7# 8532200

确定一下,
1、你这个文件夹里面只有一个txt文件,且是数字命名 (假设是 50.txt)
2、那么运行批处理文件则在该文件夹里创建50个txt文件,且以 001.002.003.......规律命名。
3、50.txt该怎么处理,这是唯一重名的
如果上面理解没错的话,不明白怎么会有重名问题
“每次运行前我都需要反复检查各个文件夹的txt文件名称”
把问题说仔细点,或许连这个麻烦都能省略。
作者: 8532200    时间: 2020-7-26 07:44

本帖最后由 8532200 于 2020-7-26 08:08 编辑
回复  8532200

确定一下,
1、你这个文件夹里面只有一个txt文件,且是数字命名 (假设是 50.txt)
2、 ...
FOR 发表于 2020-7-26 06:38



    1、你这个文件夹里面只有一个txt文件,且是数字命名 (假设是 50.txt)                    (都是从1.2.3开始。。一直到10000,这个应该没限制吧?其实很少可能超10000,每个文件夹只有单文件txt)
2、那么运行批处理文件则在该文件夹里创建50个txt文件,且以 001.002.003.......规律命名。                                  (不是从001开始哦。。。001那个是备选。。。最重要的是从1.2.3.4开始创建)
3、50.txt该怎么处理,这是唯一重名的                                       (我不懂这个。。。我以为建立1到33个txt,遇到33肯定会重名)
如果上面理解没错的话,不明白怎么会有重名问题
“每次运行前我都需要反复检查各个文件夹的txt文件名称”
把问题说仔细点,或许连这个麻烦都能省略。
作者: zaqmlp    时间: 2020-7-26 09:30

  1. @echo off
  2. for /d %%a in (*) do (
  3.     pushd "%%a"
  4.     for /f "delims=" %%b in ('dir /a-d/b/s *.txt 2^>nul') do (
  5.         for /f "tokens=1,2 delims=0123456789" %%c in ("#%%~nb#") do (
  6.             if "%%c%%d" equ "##" (
  7.                 for /f "tokens=* delims=0" %%e in ("%%~nb") do (
  8.                     if "%%e" neq "%%~nb" (if "%%e" neq "" ren "%%~nb.txt" "%%e.txt")
  9.                     for /l %%f in (1 1 %%e) do (
  10.                         if not exist "%%~dpb%%f.txt" type nul>"%%~dpb%%f.txt"
  11.                     )
  12.                 )
  13.             )
  14.         )
  15.     )
  16.     popd
  17. )
  18. pause
  19. exit
复制代码

作者: 8532200    时间: 2020-7-26 09:37

zaqmlp 发表于 2020-7-26 09:30



    感谢大大。。实测已通过。。已经支付十元小小感谢。感激不尽




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