2016-09-23 95 views
-3

源文件的內容(CSV):到第一線和不同的文字的所有後續行的開頭的開頭添加文本文件

430,081216,081216,131231231231,,'',8686866,'Shamrock',, 
1, ,5,,'',, ,,32.50, 
2,-,3,,'',, ,382847,25.92, 
3, ,5,,'',, ,98765430,32.89, 

目標文件需要(CSV):

H,430,081216,081216,131231231231,,'',8686866,'Shamrock',, 
D,1, ,5,,'',, ,,32.50, 
D,2,-,3,,'',, ,382847,25.92, 
D,3, ,5,,'',, ,98765430,32.89, 

我需要將「H」添加到文件第一行的開頭,並將「D」添加到文件中所有後續行的開頭,然後另存爲另一個文件名。我不知道這樣做的最好方法。我是一個新手在此,並會感謝您可以提供任何幫助。

+4

是不是認真DOS?像80年代的操作系統一樣?或者它只是Windows中的常規命令提示符? (實際上有區別) – SomethingDark

+1

你使用的是什麼操作系統? –

+0

[DOS和Windows cmd是不同的東西](http://superuser.com/q/451432/241386) –

回答

0
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
SET "destdir=U:\destdir" 
SET "filename1=%sourcedir%\q39652124.txt" 
SET "outfile=%destdir%\outfile.txt" 
SET "hord=" 
(
FOR /f "usebackqdelims=" %%a IN ("%filename1%") DO (
IF DEFINED hord (ECHO D%%a) ELSE (SET "hord=D"&ECHO H%%a) 

) 
)>"%outfile%" 

GOTO :EOF 

你需要改變的sourcedirfilename1outfiledestdir設置以適合你的情況。

我使用了一個名爲q39652124.txt的文件,其中包含我的測試數據。

可生產定義爲%OUTFILE%

讀取文件的每行的文件,分配線路內容%%a。由於hord設置爲沒有任何在開始時,它沒有被定義,因此設置hord爲某些內容並且前綴爲H的行是echo ed。現在定義了hord,因此每輸出一行前面加上D

+0

謝謝,Magoo! 這工作,對我的數據進行了一些更改,但基本代碼/邏輯完美。非常感謝! – user6867741

0

雖然你沒有顯示任何自己的努力,我決定提供一個快速的答案。在提問之前,請自己學習並自己做一些工作!

所以這裏是修改通過命令行提供的所有文件的腳本:

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 

for %%F in (%*) do (
    set "FLAG=#" 
    for /F delims^=^ eol^= %%L in (' 
     type "%%~F" ^&^
     REM ^> "%%~F" break 
    ') do (
     REM >> "%%~F" (
      if defined FLAG (
       echo H,%%L 
       set "FLAG=" 
      ) else (
       echo D,%%L 
      ) 
     REM) 
    ) 
) 

endlocal 
exit /B 

已經測試後,從腳本REM命令卸下三個大寫!

注意,它修改給定文件時不提示不檢查第一列alread是否包含HD

1

也許這更簡單的方法可能是更容易理解......

@echo off 
setlocal EnableDelayedExpansion 

set "letter=H" 
(for /F "delims=" %%a in (source.csv) do (
    echo !letter!,%%a 
    set "letter=D" 
)) > target.csv 
相關問題