scratch
Goto Top

Per Batch 1. Zeile einer .txt auf bestimmten PC auslesen

Moin, moin,

ich habe folgendes Problemchen: Ich möchte die erste Zeile einer bestimmten .txt-Datei im Pfad c:\Programme\ProgrammX\text.txt auslesen.
Ich scheitere allerdings schon bei der 1. Zeile:

for /F "delims=;" %%i in (C:\Programme\fawbsh\LOGMSG.TXT) do echo %%i>>ausgabe.txt  

liest leider die ganze File ein.

Ist allerdings das kleinere Problem. Das eigentliche Problem ist, dass das nicht lokal auf meinem Rechner ausgeführt werden soll, sondern auf
bestimmten Rechnern bei uns in der Firma. Irgendwo habe ich mal gelesen, dass man keine doppelte IF-Anweisung, also in sich verschachtelt,
durchführen kann.

Mit
For /F %%a in (liste.txt) DO (
und dann die anweisung von oben in den klammern funktioniert es leider nicht.

Wie kann ich mein Problemchen lösen?
Kommentar vom Moderator Biber am 25.05.2010 um 16:25:00 Uhr
Verschoben nach "Batch & Shell" von "Entwicklung".

Content-ID: 143494

Url: https://administrator.de/contentid/143494

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

callback
callback 25.05.2010 um 15:41:23 Uhr
Goto Top
ähm entschuldigung, wenn die frage jetzt ein bischen blöd klingt, aber du redest was von verschachtelten if-anweisungen, und schreibst dann in deinem code ne for-schleife, ich blick da grad nicht durch was du eigentlich willst.

MfG

CALLBACK
60730
60730 25.05.2010 um 15:46:57 Uhr
Goto Top
Salü,

findstr /n "." "C:\Programme\fawbsh\LOGMSG.TXT" |findstr /b /c "1:">ausgabe.txt  

Wie das genau funktioniert?

Einfach mal findstr /? aufrufen und sich den Sinn von /C /B /N ansehen.
Das erste "." ist der sonst übliche Platzhalter (*)

Gruß

edit:
Irgendwo habe ich mal gelesen, dass man keine doppelte IF-Anweisung, also in sich verschachtelt, durchführen kann.

das ist quark...
Ein ganz simples Beispiel...

if exist c:\ echo c ist da
if exist c:\ if exist d:\ echo c und d sind da
bastla
bastla 25.05.2010 um 16:09:13 Uhr
Goto Top
Hallo Scratch!

Ich sehe auch noch keine Notwendigkeit für auch nur ein "if" - aber vermutlich ist ohnehin das Verschachteln von "for"-Schleifen gemeint, was ganz nebenbei auch kein Problem ist ...

... aber zur eigentlichen Frage: Am einfachsten kommst Du zur ersten Zeile einer Datei über:
set /p ErsteZeile=<Datei.txt
[Edit]
Wenn es tatsächlich darum gehen sollte, aus mehreren Dateien jeweils nur die erste Zeile in eine neue Datei zu schreiben, würde ich das allerdings eher so versuchen:
for /f %%a in (liste.txt) do (
    set "Erste=True"      
    for /f "usebackq delims=" %%i in ("%%a") do (  
        if defined Erste >>ausgabe.txt echo %%i
        set "Erste="  
    )
)
[/Edit]

Grüße
bastla
Scratch
Scratch 25.05.2010 um 16:46:18 Uhr
Goto Top
Peinlich face-sad Ja, geschrieben IF-Anweisung, gemeint For-Schleife face-confused Ich danke euch erstmal. kanns allerdings erst morgen ausprobieren. Werde dann aber berichten, ob ich Erfolg hatte oder nicht.
Scratch
Scratch 26.05.2010 um 11:51:17 Uhr
Goto Top
So. Entweder ich stehe mal wieder auf dem Schlauch, oder da stimmt irgendwas nicht. Kommt aufs gleiche raus face-big-smile
for /f %%a in (liste.txt) do (
set "Erste=True"  
for /f "usebackq delims=" %%i in (\\%%a\c$\Programme\ProgrammX\logdatei.txt) do (  
if defined Erste echo %%a %%i>>ausgabe.txt 
set "Erste="  
)
)
Warum genau definierst du eigentlich die Variable?
In meiner Liste sthen jetzt 2 Computernamen drin. In meine ausgabe.txt schreibt er aber nur den ersten in der Datei und dahinter dann die erste Zeile meiner auszulesenden Logdatei.
Warum arbeitet er die Liste nicht weiter ab?

Edit: Hat sich erledigt, mein Fehler. Ich hatte einen ungüötigen Computernamen in der Liste. Vielen Dank, klappt jetzt alles so, wie es soll!
bastla
bastla 26.05.2010 um 12:35:13 Uhr
Goto Top
Hallo Scratch!
Warum genau definierst du eigentlich die Variable?
Eine "for /f"-Schleife geht immer alle Zeilen der Datei durch - um nur die erste auch in die Ausgabedatei zu schreiben, verwende ich die Variable %Erste% als Schalter (der sich am einfachsten hinsichtlich Existenz abfragen lässt - es ist daher egal, welcher Text in Zeile 2 zugewiesen wird; wichtig ist nur, dass in Zeile 5 die Variable für diese Datei wieder gelöscht wird, sodass eben nur die eine Zeile geschrieben wird).

Grüße
bastla