77522
11.04.2009, aktualisiert am 12.04.2009
5692
6
0
mit batch zeichen in einer bat datei finden
Brauche mal wieder hilfe
hi alle zusammen
habe mal wieder ne batch versucht die aus einer batch datei die zeichen %% findet und die zeile angibt.
nur leider habe ich wieder etwas falsch gemacht
mein code:
kann mir jemand bitte sagen wie es richtig geht
gruß
collmaster59
habe mal wieder ne batch versucht die aus einer batch datei die zeichen %% findet und die zeile angibt.
nur leider habe ich wieder etwas falsch gemacht
mein code:
@echo off
for /f "delims=" %%e in ('"laufwerk.bat | find /n /i "%%""') do set var=%%e
echo %var%
pause
kann mir jemand bitte sagen wie es richtig geht
gruß
collmaster59
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 113701
Url: https://administrator.de/contentid/113701
Ausgedruckt am: 28.03.2024 um 14:03 Uhr
6 Kommentare
Neuester Kommentar
Hallo collmaster59!
Abgesehen davon, dass %var% nur die letzte Zeile mit "%%" (und natürlich deren Nummer) enthalten wird, könntest Du das so schreiben (für "findstr" müssen Sonderzeichen durch " \" maskiert werden):
Falls Du übrigens "find" bevorzugen solltest (ev tatsächlich sinnvoll, um die Zeilennummer leichter isolieren zu können - siehe unten):
bzw mit Zerlegung:
Grüße
bastla
P.S.: Findest Du nicht auch, dass Batch-Zeilen in ""-Formatierung besser aussehen?
[Edit] "%"-Zeichen in der "find"-Variante jeweils für Batch verdoppelt [/Edit]
Abgesehen davon, dass %var% nur die letzte Zeile mit "%%" (und natürlich deren Nummer) enthalten wird, könntest Du das so schreiben (für "findstr" müssen Sonderzeichen durch " \" maskiert werden):
for /f "delims=" %%e in ('findstr /n "\%\%" "laufwerk.bat"') do set "var=%%e"
for /f "delims=" %%e in ('find /n "%%%%" "laufwerk.bat"') do set "var=%%e"
for /f "tokens=1* delims=" %%e in ('find /n "%%%%" "laufwerk.bat"') do set Nr=%%e & set "Zeile=%%f"
bastla
P.S.: Findest Du nicht auch, dass Batch-Zeilen in ""-Formatierung besser aussehen?
[Edit] "%"-Zeichen in der "find"-Variante jeweils für Batch verdoppelt [/Edit]
Hallo collmaster59!
Ebenfalls sinnvoll für die Testphase: Anstelle von "echo off" ein "echo on" zu verwenden, da so alle Befehle vorweg angezeigt werden. Wenn Du das so machst, kannst Du erkennen, ob (bzw - wahrscheinlich - dass) die entsprechenden Zeilen gefunden werden.
Sollte aber in einer gefundenen Zeile etwa eine Umleitung (">" oder ">>") enthalten sein, wird diese natürlich bei der Ausgabe per "echo" auch ausgeführt. Abhilfe könnte dann eine Ersetzung durch die "maskierte" Version ("^>") schaffen:
(siehe dazu "set /?") ...
Grüße
bastla
leider öffnet sich nur ein leeres cmd fenster
Diese Tatsache ist schon mal ein sehr schlechtes Zeichen - weil sie zeigt, dass Du den Batch nicht direkt von der Kommandozeile startest (was Du während des Testens tun solltest) ...Ebenfalls sinnvoll für die Testphase: Anstelle von "echo off" ein "echo on" zu verwenden, da so alle Befehle vorweg angezeigt werden. Wenn Du das so machst, kannst Du erkennen, ob (bzw - wahrscheinlich - dass) die entsprechenden Zeilen gefunden werden.
Sollte aber in einer gefundenen Zeile etwa eine Umleitung (">" oder ">>") enthalten sein, wird diese natürlich bei der Ausgabe per "echo" auch ausgeführt. Abhilfe könnte dann eine Ersetzung durch die "maskierte" Version ("^>") schaffen:
echo "%Zeile:>=^>%"
Grüße
bastla