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

[文本处理] [已解决] 批处理怎样批量修改多个txt文件?

比如一个文件夹内的文件名是从0001----0999
例1:
Part Number   :  PCO2R0U48AF REV 0D
Operator Name :  001
Serial Number :  00001
DATE :  03-25-2010
TIME :  17:15:12
例2:
Part Number   :  PCO2R0U48AF REV 0D
Operator Name :  001
Serial Number :  00002
DATE :  03-25-2010
TIME :  17:15:12

这两个文件的文件名分别是0001  0002(是按从小到大的顺序排)
文件名和文件的Serial Number   后的数字一起变化,文件名从0001变成DK1011NAF01,文件中Serial Number后的0001也变成DK1011NAF01,下个文件名和文件中Serial Number 后的数字也变成DK1011NAF02,
一直变到 DK1011NAF09 的时候,下个文本中Serial Number中的数值就变成 DK1011NAF0A--------DK1011NAF0Z
以此类推:
DK1011NAF00-------DK1011NAF09;
DK1011NAF09-------DK1011NAF0A;
DK1011NAF0A-------DK1011NAF0Z;

DK1011NAF10-------DK1011NAF19;
DK1011NAF1A-------DK1011NAF1Z;

DK1011NAF20-------DK1011NAF29;
DK1011NAF2A-------DK1011NAF2Z;

DK1011NAF30-------DK1011NAF39;
DK1011NAF3A-------DK1011NAF3Z;

DK1011NAF90-------DK1011NAF9Z;
DK1011NAFA0-------DK1011NAFA9;

DK1011NAFA9-------DK1011NAFAA;
DK1011NAFAA-------DK1011NAFAZ;

DK1011NAFB0-------DK1011NAFBZ;

DK1011NAFZZ-------DK1011NAG00;

DK1011NAG00-------DK1011NAG09;
DK1011NAG0A-------DK1011NAG0Z;
一直变到
DK1011NAZZZ,结束

中间变化的字母不要 I,O , X

请问怎么实现,谢谢大家了

[ 本帖最后由 hwylq 于 2010-4-17 09:21 编辑 ]
1

评分人数

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

有难度,字母的计算可以通过ASCII码,但是进位就比较麻烦了。
不知道还有没有其它思路。
1

评分人数

Do All in Command Line

TOP

用第三方的也可以

TOP

原帖由 hwylq 于 2010-3-18 15:33 发表
比如
Part Number   :  PCO2A0U04RM36
Operator Name :  001
Serial Number :  00169

CHANNEL:  1
Result: pass

我想把00169 换成 0287914EA1000001 并且在下一个文本后面的三位自动加一,当加到0287914 ...


ps:文件名也一样要变…………………………文件名这么变?
另外能不能贴个完整的文本样本?

TOP

Part Number   :  PCO130W04RM36
Operator Name :  001
Serial Number :  00001

CHANNEL:  1
Result: pass

                           Attenuation
Frequency (MHZ)     Max Lim (dB)     Min Lim (dB)     Result (dB)
    0.6              -55.0             -150             -81.40
     1               -55.0             -150             -85.56
     3               -55.0             -150             -87.01
     5               -55.0             -150             -83.69
     7               -55.0             -150             -78.61
     9               -55.0             -150             -72.53
    11               -55.0             -150             -66.43
    13               -55.0             -150             -60.59
    15               -55.0             -150             -64.34
    17               -55.0             -150             -62.25

全文就是这样,文件名现在可以不用管

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set /a tt=0,tt3=0,x=1000
  3. set n=99&for %%a in (9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do set /a n+=1&set _!n!=%%a
  4. for %%a in (*.txt) do (
  5.   set /a x+=1&if !x! gtr 1999 (call :zm) else (set xx=!x:~-3!)
  6.   for /f "tokens=1* delims=:" %%b in ('type "%%~a"^|findstr /n .*^&del  "%%~a"') do (if %%b==3 (echo.Serial Number :  0287914EA1000!xx!) else (echo.%%c))>>"%%a"
  7.    )
  8. pause
  9. :zm
  10. set /a b=100+(!tt!-26)/676,s=100+!tt3!,g=101+!tt!%%26
  11. set /a tt+=1,tt1=1+!tt!%%26
  12. if !tt1!==26 set /a tt2+=1,tt3=1+!tt2!%%26
  13. for /f "tokens=1-3" %%a in ("_!b! _!s! _!g!") do set xx=!%%a!!%%b!!%%c!
复制代码
1

评分人数

TOP

还是不对啊,没有变成字母,变化的顺序也没有对啊,不过还是要谢谢你

TOP

要多于1000个文件才会出现字母!
0287914EA1000001 并且在下一个文本后面的三位自动加一,当加到0287914EA1000999的时候变成……

按你的要求 前999个文件是数字
1

评分人数

TOP

不好意思,上面写错了,是0---9,在从A---Z,直到ZZZ,和文件名一样的变。略过字母O, I, X

[ 本帖最后由 hwylq 于 2010-3-24 09:50 编辑 ]

TOP

请用至少两个实例描述问题

偶依旧对你的要求不甚了解
1

评分人数

TOP

例1:
Part Number   :  PCO2R0U48AF REV 0D
Operator Name :  001
Serial Number :  00001
DATE :  03-25-2010
TIME :  17:15:12
例2:
Part Number   :  PCO2R0U48AF REV 0D
Operator Name :  001
Serial Number :  00002
DATE :  03-25-2010
TIME :  17:15:12

这两个文件的文件名分别是0001  0002(就从这开始转换)
文件名和文件的Serial Number   后的数字一起变化,文件名从0001变成DK1011NAF01,文件中Serial Number后的0001也变成DK1011NAF01,变成DK1011NAF02,直到DK1011NAF09,之后变成DK1011NAF0A,直到DK1011NAF0Z,中间变化的字母不要 I,O , X ,然后变成
DK1011NAF10,在变成DK1011NAF11,再到DK1011NAF19,在变成DK1011NAF1A,在到DK1011NAF1Z,
然后变成DK1011NAF20,在到DK1011NAF2Z,到DK1011NAF30,一直变成DK1011NAFZZ,在变化成DK1011NAG00,一直到DK1011NAZZZ就结束。

[ 本帖最后由 hwylq 于 2010-4-7 16:53 编辑 ]

TOP

不知道 源文件 中 Serial Number :  后面的值怎么变?
Serial Number :  00009 下一个是Serial Number :  00010 还是 Serial Number :  0000A

TOP

源文件 中 Serial Number :  后面的值怎么变?
Serial Number :  00009 下一个是Serial Number :  00010 还是 Serial Number :  0000A

源文件中Serial Number :   00009 下一个是00010,都是数字在变

[ 本帖最后由 hwylq 于 2010-4-6 17:07 编辑 ]

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z"
  3. set/a n=0,c=0,b=0,a=0
  4. for %%i in (%str%) do (set "_!n!=%%i"&&set/a n+=1)
  5. :loop
  6. set /a c+=1
  7. if %c% GEQ 36 set/a c=0,b+=1
  8. if %b% GEQ 36 set/a b=0,a+=1
  9. echo !_%a%!!_%b%!!_%c%!
  10. ping -n 1 127.1>nul
  11. goto :loop
复制代码
只输出后3位,其它功能你也没说的多清楚,自己加进去好了
数字 009-->00A     00Z-->010   01Z-->020   0ZZ-->100-->101

[ 本帖最后由 caruko 于 2010-4-6 18:04 编辑 ]
1

评分人数

TOP

如果楼主能把问题描述清楚的话,我想论坛应该有很多人能解决你的问题的。
我是完全不懂楼主的意思。
1

评分人数

TOP

返回列表