meuse
Goto Top

Auslesen einzlner Zeilen aus einem TXT File mittels Batch

Hallo Jungs!

Ich habe folgendes Problem. Ich habe eine Liste mit mehreren Rechner als TXT. Nun sollte ich auf diesen Rechnern Änderungen vornehmen und weiß aber nicht, wie ich die Rechner nacheinander, zeilenweise auslesen kann.

Danke

.meuse

Content-ID: 3311

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

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

meto
meto 19.10.2004 um 13:01:43 Uhr
Goto Top
Versuch es mal mit VB-Scripting. Anleitung findest du unter http://www.microsoft.com/germany/technet/datenbank/articles/600356.mspx
Damit kannst du deine Textdatei zeilenweise auslesen und dann VB-Befehle oder auch CMD-Befehle ausführen.
Lord-Helmi
Lord-Helmi 19.10.2004 um 13:08:39 Uhr
Goto Top
Hallo,

den Befehl, den du suchst, lautet "for". Mit einer for-Schleife kannst du jede einzelne Zeile aus deiner Textdatei auslesen und dafür jeweils eine bestimmte Aktion ausführen.

Falls du hilfe beim Erstellen der for-Schleife brauchst, poste einfach mal einen Auszug aus der Text-Datei und welcher Befehl für die Zeilen ausgeführt werden soll.

Gruß
Michael
meuse
meuse 19.10.2004 um 13:16:03 Uhr
Goto Top
Hallo!

Also ich sollte folgendes haben. Ich habe TXT file mit lauter Rechnernamen

PC1
PC2
PC3
...

Nun sollte ich haben, dass mir das Batchfile ein Echo ausgeben soll, welche PC´s in der Liste stehen.

FOR %%f IN () DO echo %%f

aber ich weiß leider nicht, was in die Klammer kommt. Wenn ich das Textfile angebe, wird der Name des Files ausgegeben und nicht PC1, PC2, ... .

Danke
Lord-Helmi
Lord-Helmi 19.10.2004 um 13:22:19 Uhr
Goto Top
Hallo

probiers mal mit der Option /f, dann müsste das ganze funktionieren. Der Name der Text-Datei kommt in die Klammern.

FOR /f %%f IN (test.txt) DO echo %%f

Gruß
Michael
meuse
meuse 19.10.2004 um 13:25:13 Uhr
Goto Top
Hallo Michael!!

Vielen Dank, es hat bestens funktioniert!!

Kennst du eventuell gute Links auf Batch Sites (Erklärung, Tutorials, ...) oder weißt du wo ich E-Books downloaden kann??

Wäre dir sehr dankbar!!

Gruß
Markus
Lord-Helmi
Lord-Helmi 19.10.2004 um 13:37:21 Uhr
Goto Top
Hallo,

leider kenne ich zu dem Thema auch keine richtig guten Seiten. Auch wenn es bestimmt eine Menge davon gibt. Eine Übersicht der Win2k und WinXP - Befehle findest du unter home.arcor.de/zero2k58/pdf/CMD_20Referenz.pdf

Gruß
Michael
matzZz3
matzZz3 29.11.2007 um 12:40:38 Uhr
Goto Top
Habe Ähnliche Aufgabenstellung, bekomme es aber ums verrecken nicht hin face-sad
Bei mir soll die Batch Datei nur die 2, 4, und 6 Zeile auslesen, bekomms aber nicht zum laufen face-sad

Bisher sieht es so aus:

@echo off
if not exist Test.txt echo Bitte ins Verzeichniss kopieren! & pause & goto :eof

@echo off
echo erstellt von Max Mustermann


FOR /f %%f IN (Test.txt) DO echo %%f

Pause

So zeigt er mir die ganze Textfile an, aber mlchte wie gesagt nur die 2,4 und 6 Zeile.

HIlfe ;(
Biber
Biber 29.11.2007 um 15:00:42 Uhr
Goto Top
Moin matzZz3.

willkommen im Forum.
In Deinem Fall dann:
a) CMD-Prompt
>for /f "tokens=1,* delims=:" %i in ('findstr /n  $ test.txt') do @for /L %a in (2,2,6) do @if %i==%a @echo %j  

b) Batch
for /f "tokens=1,* delims=:" %%i in ('findstr /n  $ test.txt') do @(  
        for /L %%a in (2,2,6) do @if %%i==%%a @echo %%j
)

Grüße
Biber
P.S. Hier bei uns im Forum
  • schreiben wir "Hallo" oder "Tach" statt "Habe Ähnliche Aufgabenstelllung" am Anfang
  • schreiben "Gruß" am Ende statt "HIlfe ;("
  • und werden aber im Gegenzug auch immer freundlich bedient.
matzZz3
matzZz3 29.11.2007 um 15:25:43 Uhr
Goto Top
Vielen Dank, Funktioniert!

Kannst du mir eventuell noch die Syntax dazu erklären?

Sieht für mich als armer einfacher Anwender doch sehr verwwirend aus :/

Es reicht dabei ne kleine Erklärung.

Gruß Mathias

PS: Werde mich in Zukunft an die Netiquette halten
Biber
Biber 29.11.2007 um 16:44:28 Uhr
Goto Top
Moin matzZz3,

danke für die Rückmeldung.
Ich versuch eine kurze Erklärung (hab einen Termin gleich).
Aber wir haben ähnliche Beispiele ausführlich aufgedröselt in Batch & Shell.
for /f "tokens=1,* delims=:" %%i in ('findstr /n  $ test.txt') do @(  
        for /L %%a in (2,2,6) do @if %%i==%%a @echo %%j
)

--> innen in der ersten Klammer anfangen zu lesen: da steht der Text, der verwertet wird.
--> teste die Ausgabe von "findstr /n $ test.txt" (ohne Anführungszeichen) am CMD-Prompt
--> Alle Zeilen incl. Leerzeilen werden nummeriert angelistet.
--> "tokens=1,* delims=:" == trenne in Token1 und TokenRest mit Trennzeichen ":"
--> Davon werden später die Zeilennummern (=Token1) geprüft daraufhin, ob die 2, 4 oder 6 heißen.


Da das zufällig eine Zahlenreihe mit konstanter Schrittweite ist, hab ich schnell die FOR /L-Anweisung genommen (die lag grad hier rum) um mit
FOR /L %%a in (2,2,6)
..von der Zahl 2 angefangen mit der Schrittweite 2 bis 6 zu zählen.

Jo, und wenn es passt, wird es ausgegeben.

Grüße
Biber