需要批处理文件帮助从文本文件中提取数据,由一堆|||分隔

时间:2013-08-14 20:40:04

标签: windows batch-file cmd

我正在运行Windows Vista,我需要一些帮助才能编写批处理程序从文本文件中提取一些数据,以便我可以生成另一个包含特定格式数据的文本文件

问题是文本文件数据被一堆||||分开我不知道如何删除或读取它们之间的数据。

以下是数据文件的示例:

MMM|^~\&|SSS||||20130813084347||RUR|14864-1W2220300-9|P^|2.3.0|||NE|ER
PID|||2013-1W2220300|-|LASTNAME^FIRSTNAME^||19971101|F|||||(416)222-3888||||||X2861673469 HY

这是我需要生成的输出文件。

currentdate  currenttime  REC   F  M  1W2220300  2861673469  HY  LASTNAME  FIRSTNAME 14864  13-AUG-2013  08:43:47  

“REC”“F”和“M”变量不会改变,但其他变量不会改变。我非常感谢任何帮助,因为我对批处理文件的了解非常有限。

2 个答案:

答案 0 :(得分:1)

sed for Windows

的解决方案
sed "y/|/ /" file

答案 1 :(得分:1)

@ECHO OFF
SETLOCAL
(
 FOR /f "delims=" %%a IN (
  q18241872.txt
  ) DO (
  SET "var=%%a"
  SETLOCAL enabledelayedexpansion
   SET var=!var:^|=^| !
   ECHO !var!
  ENDLOCAL 

 )
)>newfile.txt
GOTO :EOF

这应该从原始文件中生成newfile.txt,我已经任意命名q18241872.txt

新文件应该将每个|分隔一个空格(没有任何关于空间的神奇,可能是理性中的任何字符 - @也许......)然后您就可以进一步处理使用FOR/F "tokens=...delims=|" ...,但既然你不知道你的源的实际结构,也不知道产生你想要的输出所需的处理,那就是我要离开的地方......