将文本添加到第一行的开头,将不同的文本添加到文件

时间:2016-09-23 03:31:18

标签: csv batch-file

源文件内容(csv):

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

目标文件需要是(csv):

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

我需要在文件的第一行的开头添加“H”,并在文件中的所有后续行的开头添加“D”,并另存为另一个文件名。我不知道这样做的最好方法。我是这方面的新手,非常感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:1)

也许这种更简单的方法可能更容易理解......

@echo off
setlocal EnableDelayedExpansion

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

答案 1 :(得分: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在开始时设置为 nothing ,因此未定义,因此将hord设置为某个内容,前缀为H的行为{{1} }编辑。现在定义echo,因此输出前缀为hord的每一行。

答案 2 :(得分: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!< / p>