如何将固定长度的文本文件转换为CSV文件

问题描述:

我有一个带有固定长度数据的文本文件。 该文件包含3个字段。第一个是7个字符,第二个是19个字符,最后一个是6个字符。 我写了一个批处理文件将其转换为CSV文件。 由于组织限制,我不能安装任何外部程序,如PowerShell,所以我需要它是纯DOS命令 我写了下面的脚本,但似乎我错过了一些东西。 任何想法?如何将固定长度的文本文件转换为CSV文件

for /F "tokens=*" %%A in (test.txt) do (
set %MYVAR%=%%A 
set mer=%MYVAR:~0,7% 
set cr=%MYVAR:~7,19% 
set dt=%MYVAR:~26,6% 
set "y=%mer%,%cr%,%dt%" 
echo %y%>> test.csv 
+0

这有帮助吗? http://www.computerhope.com/forum/index.php?topic=147278.0 – user4317867 2015-02-24 08:18:54

+0

你不是_really_使用MS-DOS,是吗? Windows命令行与“DOS”无关。顺便说一句:Powershell默认安装在每个Windows 7中,如果我没有弄错的话。 – 2015-02-24 08:20:06

在批,在一个代码块使用变量的时候(也就是在括号内代码),你需要enabledelayedexpansion并使用感叹号,而不是百分比的迹象。

setlocal enabledelayedexpansion 
for /F "tokens=*" %%A in (test.txt) do (
set var=%%A 
set mer=!var:~0,7! 
set cr=!var:~7,19! 
set dt=!var:~26,6! 
set "y=!mer!,!cr!,!dt!" 
echo !y!>> test.csv 
) 

哪个应该做你想要的。

根据您使用CSV文件时,它会转换后做什么,你也许可以用你的固定宽度的文本文件一个CSV没有子提取或转换本地文件交互。就在同一目录下创建一个Schema.ini文件作为具有以下内容固定宽度的文件:

[filename.txt] 
ColNameHeader=False 
CharacterSet=1252 
Format=FixedLength 
Col1=mer Text Width 7 
Col2=cr Text Width 19 
Col3=dt Text Width 6 

瞧! MS Jet,Ace和其他文本模式驱动程序现在应该可以将您的固定宽度文件识别为不含按摩的CSV文件。

请注意,如果您想要一个用于与CSV文件交互的批处理实用程序,请参阅you might find this useful