批量修改文本文件 - 抓取一个值,自动粘贴另一个值

时间:2011-04-01 20:56:15

标签: xml text vbscript batch-file replace

我有一个文本文件,作为批处理脚本的一部分进行处理,以便存储在文档管理系统中。它类似于XML,但略有不同(某些专有格式)。 无论如何,我的文本文件如下所示:

[BREAKDOC]
[Y:PDF]
[S:WORM]
[C0:20110331]
[C1:AC7100P]
[C2:ACH FILE EDIT LISTING]
[ENDBREAK]
C:\COLD\PROC\AC7100P.PDF
[BREAKDOC]
[Y:PDF]
[S:WORM]
[C0:20110331]
[C1:AT4550P]
[C2:ATM AP MAINTENANCE REPORT BY TIME]
[ENDBREAK]
C:\COLD\PROC\AT4550P.PDF
[BREAKDOC]
[Y:PDF]
[S:WORM]
[C0:20110331]
[C1:CD1640P]
[C2:CD TRIAL BALANCE]
[ENDBREAK]
C:\COLD\PROC\CD1640P.PDF

我需要的是一个vbscript或类似的东西可以查看文件,无论它在哪里看到C0值 - 它始终是YYYYMMDD格式的日期值,它将添加具有相同日期的D值,只有MMDDYYYY格式化。 像这样:

[BREAKDOC]
[Y:PDF]
[S:WORM]
[D:03312011]
[C0:20110331]
[C1:AC7100P]
[C2:ACH FILE EDIT LISTING]
[ENDBREAK]
C:\COLD\PROC\AC7100P.PDF
[BREAKDOC]
[Y:PDF]
[S:WORM]
[D:03312011]
[C0:20110331]
[C1:AT4550P]
[C2:ATM AP MAINTENANCE REPORT BY TIME]
[ENDBREAK]
C:\COLD\PROC\AT4550P.PDF
[BREAKDOC]
[Y:PDF]
[S:WORM]
[D:03312011]
[C0:20110331]
[C1:CD1640P]
[C2:CD TRIAL BALANCE]
[ENDBREAK]
C:\COLD\PROC\CD1640P.PDF

这可以用简单的vbscript完成吗?

1 个答案:

答案 0 :(得分:1)

试试这个批处理文件

@echo off
setlocal enabledelayedexpansion
for /F %%a in (%1) do (
 set c=%%a
 set c0=!c:~1,2!
 if .!c0!==.C0 (
   set yyyy=!c:~4,4!
   set mm=!c:~8,2!
   set dd=!c:~10,2!
   echo [D:!mm!!dd!!yyyy!]
 )
 echo !c!
)

有关详细信息,请阅读HELP SET