per Batch in eine Datei nach einem bestimmten Begriff inkl der Sonderzeichen ist kleiner als und ist größer als suchen - wie geht das?
Hallo,
ich habe eine Datei file.txt. Diese wird wie folgt erzeugt:
mittels wget wird die ip-Adresse von checkip.dyndn.org geholt und als file.txt abgespeichert.
Mittels for /f gehe ich her und sorge dafür, dass nur die ip-Adresse selbst in der file.txt steht.
Nun möchte ich überprüfen, ob in der file.txt nur die ip-Adresse drin steht.
Der DL über wget soll nämlich über verschiedene Proxies erfolgen. Wenn einer nicht richtig funktioniert, dann steht am Ende eben nicht die ip-Adresse in file.txt, sondern der rest einer HTML-Datei.
Diese lässt sich aber identifizieren, indem man die Datei auf das Vorhandensein des html-Tags prüft.
Daher die Frage an euch, wie ich überprüfen kann, ob ein html> in der Datei vorkommt? Denn entweder am Anfang oder am Ende der Datei kommt der html> als Teil des Start- oder des End-Tags vor.
Ich habe es schon wie folgt versucht:
Zwar zeigt find etwas an, wenn html in der Datei vorkommt. Allerdings ändert es den Errorlevel nicht, so dass ich dann mittels if überprüfen kann, ob nun ein html in der Datei vorkommt oder ob nicht.
Viele Grüße
Martin
ich habe eine Datei file.txt. Diese wird wie folgt erzeugt:
mittels wget wird die ip-Adresse von checkip.dyndn.org geholt und als file.txt abgespeichert.
Mittels for /f gehe ich her und sorge dafür, dass nur die ip-Adresse selbst in der file.txt steht.
Nun möchte ich überprüfen, ob in der file.txt nur die ip-Adresse drin steht.
Der DL über wget soll nämlich über verschiedene Proxies erfolgen. Wenn einer nicht richtig funktioniert, dann steht am Ende eben nicht die ip-Adresse in file.txt, sondern der rest einer HTML-Datei.
Diese lässt sich aber identifizieren, indem man die Datei auf das Vorhandensein des html-Tags prüft.
Daher die Frage an euch, wie ich überprüfen kann, ob ein html> in der Datei vorkommt? Denn entweder am Anfang oder am Ende der Datei kommt der html> als Teil des Start- oder des End-Tags vor.
Ich habe es schon wie folgt versucht:
type file.txt|find "html"
if %errorlevel% == 1 goto htmlGefunden
if %errorlevel% == 0 goto ipAdresseGefunden
goto uschi
:htmlGefunden
echo %errorlevel%
echo html gefunden
pause
:ipAdresseGefunden
echo %errorlevel%
echo ip gefunden
pause
Zwar zeigt find etwas an, wenn html in der Datei vorkommt. Allerdings ändert es den Errorlevel nicht, so dass ich dann mittels if überprüfen kann, ob nun ein html in der Datei vorkommt oder ob nicht.
Viele Grüße
Martin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95742
Url: https://administrator.de/contentid/95742
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
10 Kommentare
Neuester Kommentar
hallo
ich hätte da noch eine Frage.
und zwar möchte ich gern, die Auflistung nicht untereinander, sondern nebeneinander, zudem hätte ich gern.
- bisher meine Lösung:
for /f "tokens=1,* delims=:" %%i in ('dir /b archiv\*.txt^|findstr /n $') do @echo [%%i] %%j
- Ausgabe:
[%%i] %%j
[1] datei1-text-text.txt
[2] datei2-text.-texttxt
[3] datei3-text-text.txt
[4] datei4-text-text.txt
[5] datei5-text-text.txt
das er mir,
[1] datei1 [2] datei2 [3] datei3 [4] datei4 [5] datei5
ausgibt, sprich das "-text-text.txt" weg ist.
ist das möglich, und wenn ja wie ?
mfG RaNgErID
ich hätte da noch eine Frage.
und zwar möchte ich gern, die Auflistung nicht untereinander, sondern nebeneinander, zudem hätte ich gern.
- bisher meine Lösung:
for /f "tokens=1,* delims=:" %%i in ('dir /b archiv\*.txt^|findstr /n $') do @echo [%%i] %%j
- Ausgabe:
[%%i] %%j
[1] datei1-text-text.txt
[2] datei2-text.-texttxt
[3] datei3-text-text.txt
[4] datei4-text-text.txt
[5] datei5-text-text.txt
das er mir,
[1] datei1 [2] datei2 [3] datei3 [4] datei4 [5] datei5
ausgibt, sprich das "-text-text.txt" weg ist.
ist das möglich, und wenn ja wie ?
mfG RaNgErID
Hallo RaMgErID!
Unter der Annahme, dass jeweils am ersten "-" getrennt werden soll und es keine Dateinamen mit enthaltenen "!" gibt:
Alternativ dazu:
Nachteil der zweiten (exakteren) Methode: Die Anzahl der zu verabeitenden Dateinamen wird reduziert, da jeder Name wesentlich mehr Speicherplatz benötigt.
Die jeweils letzte Zeile dient nur der Erzeugung des Abstandes zwischen Nummer und Dateinamen und setzt voraus, dass es in den Dateinamen kein "]" gibt.
Grüße
bastla
Unter der Annahme, dass jeweils am ersten "-" getrennt werden soll und es keine Dateinamen mit enthaltenen "!" gibt:
@echo off & setlocal enabledelayedexpansion
set "Liste="
for /f "delims=-" %%i in ('dir /b archiv\*.txt^|find /n "."') do set "Liste=!Liste!%%i "
set "Liste=%Liste:~,-1%"
echo %Liste:]=] %
@echo off & setlocal enabledelayedexpansion
set "Liste="
for /f "delims=" %%i in ('dir /b archiv\*.txt^|find /n "."') do set "Liste=!Liste!%%i "
set "Liste=%Liste:-text-text.txt=%"
set "Liste=%Liste:~,-1%"
echo %Liste:]=] %
Die jeweils letzte Zeile dient nur der Erzeugung des Abstandes zwischen Nummer und Dateinamen und setzt voraus, dass es in den Dateinamen kein "]" gibt.
Grüße
bastla
Wow bastla,
Ich Danke dir wie verrückt, glaubst gar nicht wie lange ich da schon rum probiert habe, und deiner einer schreibt mir mal so eben in 5 min 2 Lösungen hin.
die zudem auch noch funktionieren.
- Edit -
deine 1. Lösung doch abwärts listen ?
nebeneinander da trennt er die Dateinamen auf die nächste Zeile das schaut nicht unbedingt Übersichtlich aus.
so wie es jetzt aufgelistet ist in deiner ersten Variante bloß doch abwärts listen, nicht nebeneinander.
[1] datei1
[2] datei2
mfG RaNgErID
Ich Danke dir wie verrückt, glaubst gar nicht wie lange ich da schon rum probiert habe, und deiner einer schreibt mir mal so eben in 5 min 2 Lösungen hin.
die zudem auch noch funktionieren.
- Edit -
deine 1. Lösung doch abwärts listen ?
nebeneinander da trennt er die Dateinamen auf die nächste Zeile das schaut nicht unbedingt Übersichtlich aus.
so wie es jetzt aufgelistet ist in deiner ersten Variante bloß doch abwärts listen, nicht nebeneinander.
[1] datei1
[2] datei2
mfG RaNgErID
Hallo RaNgErID!
Bei zeilenweiser Verarbeitung würde ich dann aber doch eher zu Variante 2 tendieren:
Grüße
bastla
P.S.: Es waren 9 Minuten ...
Bei zeilenweiser Verarbeitung würde ich dann aber doch eher zu Variante 2 tendieren:
@echo off & setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b archiv\*.txt^|find /n "."') do (
set "Zeile=%%i"
set "Zeile=!Zeile:-text-text.txt=!"
echo !Zeile:]=] !
)
bastla
P.S.: Es waren 9 Minuten ...