Dos Batch:如何填写数据?

Dos Batch:如何填写数据?

我需要帮助来编写一个可以填补空白的批处理文件。

像这样的文件:

~E-00001~|~E-0000001.pdf~|~C:\2014\text\~
~E-00002~|~~|~~
~E-00003~|~~|~~
~E-00004~|~E-0000002.pdf~|~C:\2014\text\02~
~E-00005~|~~|~~
~E-00006~|~~|~~
~E-00007~|~E-0000003.pdf~|~C:\2014\text\03~
~E-00008~|~~|~~
~E-00009~|~~|~~

看起来会像这样:

~E-00001~|~E-0000001.pdf~|~C:\2014\text\~
~E-00002~|~E-0000001.pdf~|~C:\2014\text\~
~E-00003~|~E-0000001.pdf~|~C:\2014\text\~
~E-00004~|~E-0000002.pdf~|~C:\2014\text\02~
~E-00005~|~E-0000002.pdf~|~C:\2014\text\02~
~E-00006~|~E-0000002.pdf~|~C:\2014\text\02~
~E-00007~|~E-0000003.pdf~|~C:\2014\text\03~
~E-00008~|~E-0000003.pdf~|~C:\2014\text\03~
~E-00009~|~E-0000003.pdf~|~C:\2014\text\03~

谢谢你!!!

答案1

我不完全确定您的要求(请参阅我对您的 OP 的评论),但我的直觉告诉我您可能需要一个批处理文件,例如:

barlop 补充说明-jimbob 发现,这种模式可以通过替换双波浪线来实现。

@ECHO OFF
SETLOCAL

set LAST_A=
set LAST_B=
set LAST_C=

FOR /f "tokens=1,2,3 delims=|" %%A IN (%1) DO CALL :write %%A %%B %%C
GOTO :eof

:write
SET A=%1
SET B=%2
SET C=%3

IF "{%A%}"=="{~~}" SET A=%LAST_A%
IF "{%B%}"=="{~~}" SET B=%LAST_B%
IF "{%C%}"=="{~~}" SET C=%LAST_C%

ECHO %A%^|%B%^|%C%

SET LAST_A=%A%
SET LAST_B=%B%
SET LAST_C=%C%
GOTO :eof

...你可以这样调用:

x:\pathto\process_file.cmd X:\pathto\inputfile > X:\pathto\outputfile

不过,请仔细测试一下……

由 barlop 添加

J:\>type a.a
~E-00001~|~E-0000001.pdf~|~C:\2014\text\~
~E-00002~|~~|~~
~E-00003~|~~|~~
~E-00004~|~E-0000002.pdf~|~C:\2014\text\02~
~E-00005~|~~|~~
~E-00006~|~~|~~
~E-00007~|~E-0000003.pdf~|~C:\2014\text\03~
~E-00008~|~~|~~
~E-00009~|~~|~~
J:\>a.bat a.a
~E-00001~|~E-0000001.pdf~|~C:\2014\text\~
~E-00002~|~E-0000001.pdf~|~C:\2014\text\~
~E-00003~|~E-0000001.pdf~|~C:\2014\text\~
~E-00004~|~E-0000002.pdf~|~C:\2014\text\02~
~E-00005~|~E-0000002.pdf~|~C:\2014\text\02~
~E-00006~|~E-0000002.pdf~|~C:\2014\text\02~
~E-00007~|~E-0000003.pdf~|~C:\2014\text\03~
~E-00008~|~E-0000003.pdf~|~C:\2014\text\03~
~E-00009~|~E-0000003.pdf~|~C:\2014\text\03~

J:\>  
can do J:\>a.bat a.a >a.b   thus giving that output in a.b

相关内容