标题: [文本处理] 如何使用批处理将指定字符替换为日期,请指点! [打印本页]
作者: heyoug 时间: 2008-10-14 11:40 标题: 如何使用批处理将指定字符替换为日期,请指点!
原始数据a.txt(如下),
0000723752
0000380328
0000380331
0000152179
0000385197
读取A.txt中的每一行,
将前3个数字0替换为以本月1号(如:本月为10月,则数字为20081001)然后再插入数据0755
例:a.txt中的数据,把000替换成200810010755
原始数据:0000723752 修改后数据:2008100107550723752
最后在修改后的数据每行的末尾插入数据001
原始数据:0000723752 修改后数据:2008100107550723752001
将上面的数据输出到B.TXT
然后将A.TXT中的前3个数字0替换成本月2号、3号、4号一直到月底,输出到b.txt中,
附件中B.TXT是只有本月前5天的数据。
[ 本帖最后由 heyoug 于 2008-10-14 14:11 编辑 ]
作者: pusofalse 时间: 2008-10-14 14:50
- @echo off&setlocal enabledelayedexpansion
- cd.>b.txt
- for /l %%a in (1 1 31) do (
- set "var=0%%a"
- for /f "tokens=* delims=0" %%i in (a.txt) do (
- echo 200810!var:~-2!07550%%i001
- ))>>b.txt
- start b.txt
复制代码
作者: huahua0919 时间: 2008-10-14 15:16
写了个,没考虑闰年二月份的情况- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=1,2 delims=/" %%i in ('echo %date%') do (
- set year=%%i
- set month=%%j
- )
- for %%i in (1 3 5 7 8 10 12) do (if %month% equ %%i set days=31)
- for %%i in (4 6 9 11) do (if %month% equ %%i set days=30)
- if %month% equ 2 set days=29
- echo %days%
-
- for /l %%a in (1 1 %days%) do (
- set x=%%a
- if !x! lss 10 set x=0!x!
-
- for /f "delims=" %%i in (a.txt) do (
- set a=%%i
- set a=!a:~3!
- echo %year%!x!0755!a!001 >>b.txt
- )
- set a=
- )
- pause
复制代码
[ 本帖最后由 huahua0919 于 2008-10-14 15:21 编辑 ]
作者: heyoug 时间: 2008-10-14 16:15
谢谢楼上2位朋友回复,刚才做测试用的版主的,发现一个小小的问题,如果原始数据中a.txt中前面是5个0开头的整理出来后会少一位数,另外如果是其他月份该怎么设置,谢谢!
作者: pusofalse 时间: 2008-10-14 17:35
- @echo off&setlocal enabledelayedexpansion
- set /p month=几月?
- for %%i in (1 3 5 7 8 10 12) do set "_%%i=31"
- for %%i in (4 6 9 11) do set "_%%i=30"
- set "_2=29"
- cd.>b.txt
- for /l %%a in (1 1 !_%month%!) do (
- set "var=0%%a"
- for /f "delims=" %%i in (a.txt) do (
- set "str=%%i"
- echo 2008!month!!var:~-2!0755!str:~3!001
- ))>>b.txt
- start b.txt
复制代码
作者: zqz0012005 时间: 2008-10-15 00:05 标题: 来个vbs吧
- set fso = CreateObject("Scripting.FileSystemObject")
- yourMon=DateValue(inputbox("下面是当前年月","请输入年月",DatePart("yyyy",Date)&"-"&DatePart("m",Date)))
- do while month(yourMon+i)=month(yourMon)
- strDate = year(yourMon+i) & String(1 and len(month(yourMon+i)), "0") & month(yourMon+i) & String(1 and len(day(yourMon+i)), "0") & day(yourMon+i)
- fso.OpenTextFile("b.txt",8,true).WriteLine myReplace(strDate & "0755")
- i=i+1
- loop
-
- function myReplace(str)
- Set theFile = fso.OpenTextFile("a.txt")
- Do While theFile.AtEndOfStream <> True
- retstring = retstring & Replace(theFile.ReadLine, "000", str, 1,1,1) & "001" & vbCrLf
- Loop
- theFile.Close
- myReplace = retstring
- End Function
复制代码
晕 vbs返回的时间与cmd不同,对1位数不能自动在前面补0
作者: heyoug 时间: 2008-10-15 09:36
非常感谢,已经解决了。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |