2016-04-11 6 views
1

Ich bin ziemlich neu mit Batch-Scripting, und derzeit versuche ich mit einem Skript meine Arbeit zu erleichtern (was meinem Chef gefallen wird). Gibt es eine Möglichkeit für eine Batch-Datei, eine bestimmte Eingabe in einer Textdatei und echo in der Textdatei zu suchen?Suchen und Bearbeiten von Textdateien w/Batch

Zum Beispiel sucht der Textdatei wie folgt aus:

4/11/2016 
01530594 
Time In: 1:30 
01565832 
Time In: 2:32 

Die angegebene Zeichenfolge ist, in diesem Beispiel 01530594 und ich brauche es in der Textdatei zu suchen, und notieren Sie die Zeit heraus zu machen sieht es so:

4/11/2016 
01530594 
Time In: 1:30 
Time Out: 3:21 
01565832 
Time In: 

Wenn andere Sachen benötigt wird, es leichter zu machen (sagen sie schon haben Time Out: von Anfang an, ohne Zeit) erforderlich ist, das ist mehr als akzeptabel.

Ich weiß suchen/ersetzen/bearbeiten Zeug mit einer Batch-Datei ist langweilig, ist das möglich?

+0

Sorry, Sie können eine Datei nicht mit Batch bearbeiten. Sie müssen es zeilenweise lesen ('for /'?) und in eine neue Datei schreiben (Sie können das Original löschen und benenne die Kopie danach um) – Stephan

Antwort

1
set "timevalue=3:21" 
(
    for /f "delims=" %%i in (infile.txt) do (
    echo %%i 
    echo %%i|find "Time In:" >nul && echo Time Out: %timevalue% 
) 
)>outfile.txt 

Die for Schleife liest die Datei Zeile für Zeile. Die erste echo schreibt die Zeile in das Outfile.

Die zweite echo Linie ist ein bisschen komplizierter:

echo %%i|find "Time In:" aussieht, wenn die Linie, die die Zeichenfolge "In Time". >nul schreibt seine Ausgabe nach Nirvana (wir brauchen es nicht, wir wollen nur wissen, ob es da ist).

&& bedeutet „den nächsten Befehl auszuführen, wenn der vorherige Befehl erfolgreich war (das war find). Wenn ja, schreibt eine zusätzliche Zeile Time Out: %timevalue%

Das Ganze wird for Schleife in einen Block (zwischen ( und ) und Umleiten seiner Ausgabe in eine Datei

+0

Hey Stephan, danke, dass du mir dabei geholfen hast du hast es hier gegeben, damit es mit meinen Sachen funktioniert, und es funktioniert irgendwie, aber ich habe nur ein paar Fragen; Wie lösche ich die vorherige Datei und benenne die kopierte Datei um? Ich glaube, dass dies die Schleife durcheinander bringt. Falls es hilft, das ist der Code, den ich bis jetzt habe: – ricknaght

+0

edit: vergiss es, es ist chaotisch wegen Zeilenende, aber ich denke du hast die Idee. – ricknaght

+0

'del infile.txt' und' ren outfile.txt infile.txt' – Stephan