2016-09-23 3 views
-3

Quelldatei Inhalt (csv):Text zu Beginn der ersten Zeile und anderen Text zu Beginn aller nachfolgenden Zeilen in der Datei

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

Zieldatei muss sein (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, 

Ich muss ein "H" an den Anfang der ersten Zeile in der Datei und ein "D" an den Anfang aller folgenden Zeilen in der Datei hinzufügen und als einen anderen Dateinamen speichern. Ich kenne den besten Weg nicht. Ich bin ein Neuling bei diesem und würde jede mögliche Hilfe schätzen, die Sie zur Verfügung stellen können.

+4

Ist es ernst DOS? Wie das OS aus den 80ern? Oder ist es nur die normale Eingabeaufforderung in Windows? (Es gibt tatsächlich einen Unterschied.) – SomethingDark

+1

Welches Betriebssystem benutzen Sie? –

+0

[DOS und Windows cmd sind verschiedene Dinge] (http://superuser.com/q/451432/241386) –

Antwort

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 

Sie müssten die Einstellungen von sourcedir, destdirfilename1, outfile und ändern, um Ihre Umstände anzupassen.

Ich habe eine Datei mit dem Namen q39652124.txt verwendet, die Ihre Daten für meine Tests enthält.

Erzeugt die Datei als% definiert outfile%

jede Zeile der Datei lesen, die Line-Inhalt %%a zuweisen. Da hord am Anfang auf nichts eingestellt ist, ist es nicht definiert, also setzen Sie hord auf etwas und die Zeile mit dem Präfix H ist echo Ed. Jetzt ist hord definiert, also geben Sie jede weitere Zeile mit dem Präfix aus.

+0

Danke, Magoo! Dies funktioniert, mit ein paar Änderungen für meine Daten, aber der grundlegende Code/Logik funktioniert perfekt. Vielen Dank! – user6867741

0

Obwohl Sie keine eigenen Bemühungen zeigten, entschied ich mich, eine schnelle Antwort zu geben. Bitte lerne und arbeite nächstes Mal selbst, bevor du eine Frage stellst!

So, hier ist ein Skript, das über die Kommandozeile zur Verfügung gestellt, alle Dateien modifiziert:

@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 

Nachdem getestet, entfernen Sie die drei Großbuchstaben REM Befehle aus dem Skript!

Beachten Sie, dass es die angegebenen Dateien modifiziert, ohne und Auffordern ohne Überprüfung, ob die erste Spalte alread H und D enthält!

1

Vielleicht ist diese einfachere Methode könnte einfacher sein, zu verstehen ...

@echo off 
setlocal EnableDelayedExpansion 

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