Erstes Wort in einer Datei auslesen und verarbeiten
Hallo alle,
Ich habe folgendes Problem:
Ich möchte eine Batch-Datei schreiben die alle angeschlossenen Drucker, die ich mittels dem Befehl "net share" in eine Textdatei schreibe, auslesen kann und die dann benützen um ein neues Files zu schreiben.
Hier ein Auszug aus der Datei mit den Druckern die ausgelesen werden soll:
+------------------------------------+
CHBAP201 10.145.58.12 Spooled ZHBAP201
CHBAP202 10.145.58.102 Spooled ZHBAP202
CHBAP203 10.145.58.108 Spooled ZHBAP203
+--------------------------------------------------------------------+
es soll jeweils nur das erste Wort also CHBAP20* in eine Variable ausgelesen werden die dann weiter verarbeitet werden kann.
Hab mal folgendes vergeblich versucht: "FOR %%x in (Auszug.txt) do IF "%%x"=="chbap*" goto OK"
Wenn mir jemand helfen kann bin ich überaus dankbar!
Ich habe folgendes Problem:
Ich möchte eine Batch-Datei schreiben die alle angeschlossenen Drucker, die ich mittels dem Befehl "net share" in eine Textdatei schreibe, auslesen kann und die dann benützen um ein neues Files zu schreiben.
Hier ein Auszug aus der Datei mit den Druckern die ausgelesen werden soll:
+------------------------------------+
CHBAP201 10.145.58.12 Spooled ZHBAP201
CHBAP202 10.145.58.102 Spooled ZHBAP202
CHBAP203 10.145.58.108 Spooled ZHBAP203
+--------------------------------------------------------------------+
es soll jeweils nur das erste Wort also CHBAP20* in eine Variable ausgelesen werden die dann weiter verarbeitet werden kann.
Hab mal folgendes vergeblich versucht: "FOR %%x in (Auszug.txt) do IF "%%x"=="chbap*" goto OK"
Wenn mir jemand helfen kann bin ich überaus dankbar!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 18410
Url: https://administrator.de/forum/erstes-wort-in-einer-datei-auslesen-und-verarbeiten-18410.html
Ausgedruckt am: 20.05.2025 um 17:05 Uhr
7 Kommentare
Neuester Kommentar
Moin kermix,
warst schon nah dran...
FOR %%x in (Auszug.txt) do IF /I "%%x"=="chbap" echo %%i >>AlleDrucker.txt
[Edit] Bullshit... hab gar nicht auf die erste Hälfte der Zeile geachtet...
Ist natürlich eine FOR /F- Schleife.... und mit "*" kann ich Strings unterm CMD-Prompt nicht verarbeiten. Da muss ich diese kryptischen Substring-Funktionen nehmen ( %PrName:~0,5% ...die ersten 5 Zeichen des Druckernamens)
[/Edit]
oder was immer Du damit machen willst.
Entscheidend war der "/i"-Parameter der IF-Anweisung.
Und ich würde kein "goto OK", sondern ein "call :OK" machen.
HTH
Frank / der Biber aus Bremen
warst schon nah dran...
[Edit] Bullshit... hab gar nicht auf die erste Hälfte der Zeile geachtet...
::~~~~~~~~Batchschnipsel~~~~
...
REM so....: FOR /F %%x in ('type Auszug.txt') do call :chkCHBAP %%x
REM oder so..:
FOR /F %%x in (Auszug.txt) do call :chkCHBAP %%x
goto :eof
:chkCHBAP
set "PrName=%1"
if /I "%PrName:~0,5%"=="CHBAP" call :CHBAPStuff %1
goto :eof
:CHBAPStuff
echo CHBAP-Drucker gefunden: %1
::....whatever ....(CHBAP-Verarbeitung)
goto :eof
::~~~~~~~~Batchschnipsel~~~~
[/Edit]
oder was immer Du damit machen willst.
Entscheidend war der "/i"-Parameter der IF-Anweisung.
Und ich würde kein "goto OK", sondern ein "call :OK" machen.
HTH
Frank / der Biber aus Bremen
@kermix
Nachtrag:
Einfacher ist alles, wenn Du gar keine Auszug.txt schreibst, sondern dort, wo oben im Beispiel ...('type Auszug.txt') steht, statt dessen Dein "Net share.." ..gefiltert auf alle CHBAP-Zeilen machst.
In etwa also:
FOR /F %%x in ('net share... ^|find "CHBAP" ') do Call :CHBAPStuff %%x
Biber
Nachtrag:
Einfacher ist alles, wenn Du gar keine Auszug.txt schreibst, sondern dort, wo oben im Beispiel ...('type Auszug.txt') steht, statt dessen Dein "Net share.." ..gefiltert auf alle CHBAP-Zeilen machst.
In etwa also:
FOR /F %%x in ('net share... ^|find "CHBAP" ') do Call :CHBAPStuff %%x
Biber
Moin, kermix
ich hatte es oben schon kurz gestreift:
Es gibt bei den etwas neueren Windowsversion immerhin ein paar Elementarfunktionen auch für den CMD-Interpreter (oder die "Eingabeaufforderung", wie das im Menü heißt).
Eine dieser Funktionalitäten ist, dass M$ jetzt ein bisschen unterstützt, Umgebungsvariablen nicht nur als Ganzes zu benutzen, sondern in ihnen auch mit Teilstrings zu arbeiten oder in ihnen Zeichen zu ersetzen.
Die Syntax davon ist allerdings auf den Blick etwas strange, aber leider folgerichtig.
Umgebungsvariablen werden vom CMD-Interpreter erkannt, wenn sie in Prozentzeichen eingeschlossen sind. Ich wechsele mal auf die Eingabeaufforderung, da ist es einfacher.
wenn ich von der Variablen %date% nur einen Teilstring haben will, muss ich innerhalb der Prozentzeichen noch eingeben
- ein ":~" (heißt nur "jetzt Substringfunktion anwenden")
- und angeben, von welchem Zeichen (Start des Zählens bei 0) und wie viele Zeichen.
HTH
Biber
ich hatte es oben schon kurz gestreift:
Da muss ich diese kryptischen Substring-Funktionen nehmen ( %PrName:~0,5% ...die ersten 5 Zeichen des Druckernamens)
Es gibt bei den etwas neueren Windowsversion immerhin ein paar Elementarfunktionen auch für den CMD-Interpreter (oder die "Eingabeaufforderung", wie das im Menü heißt).
Eine dieser Funktionalitäten ist, dass M$ jetzt ein bisschen unterstützt, Umgebungsvariablen nicht nur als Ganzes zu benutzen, sondern in ihnen auch mit Teilstrings zu arbeiten oder in ihnen Zeichen zu ersetzen.
Die Syntax davon ist allerdings auf den Blick etwas strange, aber leider folgerichtig.
Umgebungsvariablen werden vom CMD-Interpreter erkannt, wenn sie in Prozentzeichen eingeschlossen sind. Ich wechsele mal auf die Eingabeaufforderung, da ist es einfacher.
echo %date%
Mi 26.10.2005 --------------- so oder so ähnlich sieht die Rückgabe auswenn ich von der Variablen %date% nur einen Teilstring haben will, muss ich innerhalb der Prozentzeichen noch eingeben
- ein ":~" (heißt nur "jetzt Substringfunktion anwenden")
- und angeben, von welchem Zeichen (Start des Zählens bei 0) und wie viele Zeichen.
echo Wochentag ist %date:~0,2% ------------ die ersten zwei Zeichen von %Date%
Wochentag ist Miset "PrName=CHBAP123"
echo %PrName:~0,5% ------------die ersten fünf Zeichen von %PrName%
CHBAPecho %PrName:~0,5% ------------die ersten fünf Zeichen von %PrName%
HTH
Biber
Danke Dir auch, kermix,
für die Rückmeldung.
Kannst ja gerne noch Dein Script posten - vielleicht kann ich noch ein, zwei Tuning-Tipps abgeben. Ich hole mir dann umgekehrt Rat und Hilfe bei Perl - da hab ich nur Noob-Status.
Aber damit könnte ich bestimmt wunderbare Onelinerzusammenschroten implementieren.

Grüße aus Bremen
Biber
für die Rückmeldung.
Kannst ja gerne noch Dein Script posten - vielleicht kann ich noch ein, zwei Tuning-Tipps abgeben. Ich hole mir dann umgekehrt Rat und Hilfe bei Perl - da hab ich nur Noob-Status.
Aber damit könnte ich bestimmt wunderbare Oneliner
Grüße aus Bremen
Biber