标题: [文本处理] [已解决] 批处理怎样批量修改多个txt文件? [打印本页]
作者: hwylq 时间: 2010-3-18 15:33 标题: [已解决] 批处理怎样批量修改多个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 编辑 ]
作者: BatCoder 时间: 2010-3-18 15:51
有难度,字母的计算可以通过ASCII码,但是进位就比较麻烦了。
不知道还有没有其它思路。
作者: hwylq 时间: 2010-3-19 10:43
用第三方的也可以
作者: yangfengoo 时间: 2010-3-20 08:21
原帖由 hwylq 于 2010-3-18 15:33 发表
比如
Part Number : PCO2A0U04RM36
Operator Name : 001
Serial Number : 00169
CHANNEL: 1
Result: pass
我想把00169 换成 0287914EA1000001 并且在下一个文本后面的三位自动加一,当加到0287914 ...
ps:文件名也一样要变…………………………文件名这么变?
另外能不能贴个完整的文本样本?
作者: hwylq 时间: 2010-3-20 10:37
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
全文就是这样,文件名现在可以不用管
作者: yangfengoo 时间: 2010-3-20 11:50
- @echo off&setlocal enabledelayedexpansion
- set /a tt=0,tt3=0,x=1000
- 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
-
- for %%a in (*.txt) do (
- set /a x+=1&if !x! gtr 1999 (call :zm) else (set xx=!x:~-3!)
- 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"
- )
- pause
- :zm
- set /a b=100+(!tt!-26)/676,s=100+!tt3!,g=101+!tt!%%26
- set /a tt+=1,tt1=1+!tt!%%26
- if !tt1!==26 set /a tt2+=1,tt3=1+!tt2!%%26
- for /f "tokens=1-3" %%a in ("_!b! _!s! _!g!") do set xx=!%%a!!%%b!!%%c!
复制代码
作者: hwylq 时间: 2010-3-20 14:27
还是不对啊,没有变成字母,变化的顺序也没有对啊,不过还是要谢谢你
作者: yangfengoo 时间: 2010-3-20 15:25
要多于1000个文件才会出现字母!
0287914EA1000001 并且在下一个文本后面的三位自动加一,当加到0287914EA1000999的时候变成……
按你的要求 前999个文件是数字
作者: hwylq 时间: 2010-3-22 08:32
不好意思,上面写错了,是0---9,在从A---Z,直到ZZZ,和文件名一样的变。略过字母O, I, X
[ 本帖最后由 hwylq 于 2010-3-24 09:50 编辑 ]
作者: yangfengoo 时间: 2010-3-30 15:37
请用至少两个实例描述问题
偶依旧对你的要求不甚了解
作者: hwylq 时间: 2010-4-1 15:19
例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 编辑 ]
作者: yangfengoo 时间: 2010-4-6 15:40
不知道 源文件 中 Serial Number : 后面的值怎么变?
Serial Number : 00009 下一个是Serial Number : 00010 还是 Serial Number : 0000A
作者: hwylq 时间: 2010-4-6 16:53
源文件 中 Serial Number : 后面的值怎么变?
Serial Number : 00009 下一个是Serial Number : 00010 还是 Serial Number : 0000A
源文件中Serial Number : 00009 下一个是00010,都是数字在变
[ 本帖最后由 hwylq 于 2010-4-6 17:07 编辑 ]
作者: caruko 时间: 2010-4-6 18:00
- @echo off&setlocal enabledelayedexpansion
- 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"
- set/a n=0,c=0,b=0,a=0
- for %%i in (%str%) do (set "_!n!=%%i"&&set/a n+=1)
- :loop
- set /a c+=1
- if %c% GEQ 36 set/a c=0,b+=1
- if %b% GEQ 36 set/a b=0,a+=1
- echo !_%a%!!_%b%!!_%c%!
- ping -n 1 127.1>nul
- goto :loop
复制代码
只输出后3位,其它功能你也没说的多清楚,自己加进去好了
数字 009-->00A 00Z-->010 01Z-->020 0ZZ-->100-->101
[ 本帖最后由 caruko 于 2010-4-6 18:04 编辑 ]
作者: FOR 时间: 2010-4-6 18:19
如果楼主能把问题描述清楚的话,我想论坛应该有很多人能解决你的问题的。
我是完全不懂楼主的意思。
作者: yangfengoo 时间: 2010-4-6 21:50
- @echo off&setlocal enabledelayedexpansion
- set n=100&for %%a in (0 1 2 3 4 5 6 7 8 9 A B C D E F G H J K L M N P Q R S T U V W Y Z) do set _!n!=%%a&set /a n+=1
- for %%a in (*.txt) do (
- for /f "tokens=2 delims=:" %%b in ('findstr /c:"Serial Number" "%%~a"') do set #=%%b&call :zm %%a
- )
- exit
- :zm
- set ss=%~n1
- if "!ss:~0,8!"=="DK1011NA" goto :eof
- for /l %%a in (2 1 7) do if not "!#:~%%a,1!"=="0" set #=!#:~%%a!&goto xx
- :xx
- set b=115
- set /a b=!b!+!#!/1089,s=100+(!#!/33)%%33,g=100+!#!%%33
- for /f "tokens=1-3" %%a in ("_!b! _!s! _!g!") do set xx=!%%a!!%%b!!%%c!
- for /f "tokens=1* delims=:" %%b in ('findstr /n .* "%~1"') do (if %%b==3 (echo.Serial Number : DK1011NA!xx!) else (echo.%%c))>>"DK1011NA!xx!.txt"
- del "%~1"
复制代码
作者: terse 时间: 2010-4-7 03:32
- @echo off&setlocal enabledelayedexpansion
- set "str=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- for /l %%a in (0 1 35) do (
- for /l %%b in (0 1 35) do (
- for /l %%c in (0 1 35) do (
- echo !str:~%%a,1!!str:~%%b,1!!str:~%%c,1!
- )))
- pause
复制代码
作者: terse 时间: 2010-4-7 10:49
- @echo off&setlocal enabledelayedexpansion
- set "str=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- for /l %%i in (0 1 46655) do (
- set /a "m=%%i/36,c=%%i%%36,b=m%%36,a=(m/36)%%36"
- for /f "tokens=1-3" %%a in ("!a! !b! !c!") do (
- echo !str:~%%a,1!!str:~%%b,1!!str:~%%c,1!
- )
- )
- pause
复制代码
作者: hwylq 时间: 2010-4-10 08:27
谢谢大家的回答,谢谢 16楼的解答,
[ 本帖最后由 hwylq 于 2010-4-10 08:32 编辑 ]
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |