Пакетная модификация текстового файла - захватить одно значение, вставить другое автоматически - PullRequest
1 голос
/ 02 апреля 2011

У меня есть текстовый файл, который обрабатывается как часть пакетного сценария для хранения в системе управления документами.Это похоже на 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 - которое всегда будет значением даты в формате ГГГГММДДбудет добавлено значение 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 Ответ

1 голос
/ 02 апреля 2011

попробуйте этот пакетный файл

@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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...