2015-02-24 115 views
0

我有一個帶有固定長度數據的文本文件。 該文件包含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

回答

1

在批,在一個代碼塊使用變量的時候(也就是在括號內代碼),你需要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 
) 

哪個應該做你想要的。

0

根據您使用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