kkboy94
Goto Top

Fehler in for - Schleife

Ich weiß, es klingt einfach. Ist es eigentlich auch aber ich glaube ich steh aufm Schlauch und kommen einfach nicht drauf, was falsch sein könnte.
Meine Schleife sieht so aus:
for /f "skip=2" %%z in (%file%.txt) do type %%z

Aber sie funktioniert einfach nicht. Die batch Datei sagt mir :

Das System kann die angegebene Datei nicht finden.

Das klingt jetzt nach --> Die Datei ist in Wirklichkeit nicht vorhanden, ABER darauf bin ich auch schon gekommen, und habe vor dem Start der Schleife noch eine pause eingefügt, und nachgesehen, ob die datei existiert oder nicht. Raus kam--> Sie ist vorhanden.

Dann habe ich noch verschieden Schreibweisen ausprobiert:
for /f "skip=2" %%z in ('%file%.txt') do type %%z
for /f "skip=2" %%z in ("%file%.txt") do type %%z

Kann mir jemand sagen, was ich falsch gemacht habe?

Danke schonmal im Voraus

MfG Karsten

Content-ID: 146155

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

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

bastla
bastla 03.07.2010 um 15:00:53 Uhr
Goto Top
Hallo Karsten!

Da ja in "%file%.txt" Dateinamen (mit oder ohne Pfad) stehen müssten: Könnte es sein, dass im Namen (oder Pfad) von %file% oder der ausgelesenen Datei Leerzeichen enthalten sind? Wenn ja:
for /f "usebackq skip=2 delims=" %%z in ("%file%.txt") do type "%%z"
Grüße
bastla
kkboy94
kkboy94 03.07.2010 um 18:23:49 Uhr
Goto Top
Danke erstmal
Komische Sache, funktioniert so halb deine Lösung.

es wird der richtige Output angegeben, allerdings :
1. es werden nur 72 der eigentlich 120 angezeigt /// Es können auch mehr Gesamt-Zeilen sein , es werden aber trotzdem IMMER (nach 5 Tests) nur 72 Zeilen im CMD-Fenster angezeigt
2. Fehlermeldung kommt trotzdem
3. Batch schließt einfach

Auf Wunsch kann ich ja auch mal eine .txt-Datei posten

MfG Karsten
bastla
bastla 03.07.2010 um 18:50:58 Uhr
Goto Top
Hallo Karsten!
Auf Wunsch kann ich ja auch mal eine .txt-Datei posten
Wäre zweifelsohne eine gute Idee ...

... und auch, woher %file% stammt, ist nicht ganz uninteressant. face-wink

Grüße
bastla
kkboy94
kkboy94 03.07.2010 um 19:10:47 Uhr
Goto Top
ok ich poste erst mal die komplette Batch:
@echo off & setlocal
chcp 1252>nul
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß
chcp 850>nul

title IP-Scan Autostart
:range
echo.
set /p bc=Geben sie den IP-Broadcast an bis zu dem gepingt werden soll (max.254): 
if not defined bc goto :range
if /i (%bc%) GEQ (255) goto :range
:filen
echo.
set /p file=Geben sie einen Dateinamen an, in dem der Output gespeichert wird: 
if not defined bc goto :filen
del %file%.txt 2>nul

for /f "tokens=1,3 delims=:" %%i in ('ipconfig/all^|findstr "IP-Ad"^|findstr /n $') do (  
  call :start %%j
)    


goto :eof 

:start
       for /f "tokens=1,2,3 delims=." %%a in ("%~1") do set ipa=%%a.%%b.%%c.  
start "IP-Scan" /wait "ipscan.exe" %ipa%0 %ipa%%bc% %file%.txt -h  
pause
for /f "usebackq skip=2 delims=" %%z in ("%file%.txt") do type "%%z"  
echo Beliebige Taste zum Beenden dr%ue%cken
pause >nul
del %file%.txt 2>nul
goto :eof  

und hier mal sone txt:
This file was generated by Angry IP Scanner
Visit http://www.angryziber.com/ for the latest version


Scanned 192.168.2.0 - 192.168.2.254
03.07.2010 18:21:47

IP                    Ping                  Hostname              

192.168.2.1           9 ms                  speedport.ip          
192.168.2.2           Dead                  N/S                   
192.168.2.3           Dead                  N/S                   
192.168.2.4           Dead                  N/S                   
192.168.2.5           Dead                  N/S                   
192.168.2.6           Dead                  N/S                   
192.168.2.7           Dead                  N/S                   
192.168.2.8           Dead                  N/S                   
192.168.2.9           Dead                  N/S                   
192.168.2.10          Dead                  N/S                   
192.168.2.11          Dead                  N/S                   
192.168.2.12          Dead                  N/S                   
192.168.2.13          Dead                  N/S                   
192.168.2.14          Dead                  N/S                   
192.168.2.15          Dead                  N/S                   
192.168.2.16          Dead                  N/S                   
192.168.2.17          Dead                  N/S                   
192.168.2.18          Dead                  N/S                   
192.168.2.19          Dead                  N/S                   
192.168.2.20          Dead                  N/S                   
192.168.2.21          Dead                  N/S                   
192.168.2.22          Dead                  N/S                   
192.168.2.23          Dead                  N/S                   
192.168.2.24          Dead                  N/S                   
192.168.2.25          Dead                  N/S                   
192.168.2.26          Dead                  N/S                   
192.168.2.27          Dead                  N/S                   
192.168.2.28          Dead                  N/S                   
192.168.2.29          Dead                  N/S                   
192.168.2.30          Dead                  N/S                   
...                                                                                         <--- Den teil hab ich mal rausgekürzt, aber man kann sich ja denken was dahin kommt       
192.168.2.94          Dead                  N/S                   
192.168.2.95          Dead                  N/S                   
192.168.2.96          Dead                  N/S                   
192.168.2.97          Dead                  N/S                   
192.168.2.98          Dead                  N/S                   
192.168.2.99          Dead                  N/S                   
192.168.2.100         Dead                  N/S                   
192.168.2.101         0 ms                  karsten-z33v.Speedport_W_700V
192.168.2.102         5 ms                  BRW00234DDD6A6B       
192.168.2.103         Dead                  N/S                   
              

Und wie siehts mit den 72 Zeilen aus? Lässt sich da vielleicht was machen?

MfG Karsten
bastla
bastla 03.07.2010 um 20:04:41 Uhr
Goto Top
Hallo Karsten!

"type" dient dazu, den Inhalt einer Datei anzuzeigen - gibt es demnach Dateien mit Namen wie "192.168.2.1" oder "192.168.2.73", bzw könntest Du kurz den eigentlichen Sinn der Aktion beschreiben?

Vielleicht könnte Dich ja eine Zeile der Art
findstr /b "[0-9][0-9][0-9]\." "%file%.txt"
oder auch
findstr /b "[0-9][0-9][0-9]\." "%file%.txt"|findstr /v "Dead"
eher Deinem Ziel näherbringen ...

Grüße
bastla
kkboy94
kkboy94 03.07.2010 um 20:18:04 Uhr
Goto Top
Das zweite funktioniert super, bis auf ein kleines Manko:
Die Überschrift ist weg, aber damit kann ich leben
Ein großes DANKESCHÖN!!

Der Sinn der ganzen Aktion (ich meine jetzt alles/die komplette Batch) lässt sich erahnen. Ich will Halt einen IP-Bereich mithilfe des Programms "AngryIP-Scanner" anpingen.

Und der Sinn der type-Geschichte:
Ich wollte halt ein temporäres Log-File, welches dann ohne die ersten beiden Zeilen in dem konsolenfenster angezeigt wird, und dazu hab ich bis jetzt immer "type" benutzt, oder ist das ein falscher Befehl? Und Nein, es gibt keine Dateien mit solchen Namen

MfG Karsten
bastla
bastla 03.07.2010 um 20:22:34 Uhr
Goto Top
Hallo Karsten!

Der Befehl zum Schreiben in das Konsolenfenster ist "echo" ...
Die Überschrift ist weg, aber damit kann ich leben
Musst Du aber nicht:
more +2 "%file%.txt"|findstr /v "Dead"
Grüße
bastla
kkboy94
kkboy94 03.07.2010 um 20:29:05 Uhr
Goto Top
Mit echo wärs dann also so?:
echo < blub.txt
Danke auch für den neuen Teil, werd ich sofort einbauen
bastla
bastla 03.07.2010 um 20:36:55 Uhr
Goto Top
Hallo Karsten!
Mit echo wärs dann also so?:
echo < blub.txt
Du wolltest doch die Zeilen des Logfiles per "for"-Schleife einzeln ausgeben - darauf hatte sich das "echo" bezogen; für die Ausgabe der kompletten Datei ist "type" natürlich ok (und wenn Du die Datei ab einer bestimmten Zeile haben willst, dann "more +Anzahl_zu_überspringender_Zeilen") ...

Grüße
bastla
kkboy94
kkboy94 03.07.2010 um 20:49:19 Uhr
Goto Top
Ahh gut ok.
1. Ich habs mal so probiert:
echo.
more +2 "%temp%\templog.txt"|findstr /v "Dead"  
echo.
echo.
echo Beliebige Taste zum Beenden dr%ue%cken
pause >nul

2. Und mal so:
echo.
more +2 "%temp%\templog.txt"|findstr /v "Dead"  
findstr /b "[0-9][0-9][0-9]\." "%temp%\templog.txt"|findstr /v "Dead"  
echo.
echo.
echo Beliebige Taste zum Beenden dr%ue%cken
pause >nul

Warum kommt bei beiden Versionen das gleiche Ergebnis?Bei 2. müsste es doch doppelt sein oder nicht?

MfG Karsten
bastla
bastla 03.07.2010 um 20:59:15 Uhr
Goto Top
Hallo Karsten!
Bei 2. müsste es doch doppelt sein oder nicht?
Ist es bei mir auch mit den von Dir geposteten Testdaten ...

Vermutlich wird bei Dir
findstr /b "[0-9][0-9][0-9]\."
keine Ausgabe erzeugen (gesucht wird damit nach Zeilen, die mit 3 Ziffern und einem Punkt beginnen) ...

Grüße
bastla
kkboy94
kkboy94 03.07.2010 um 21:04:06 Uhr
Goto Top
Doch auf einmal schon, oder ich hab mir nen Hitzeschlag geholt, dass ich eben nich vernüftig geschaut habe. Und auf einmal versteh ich auch das Zeug, was du mir eben geschrieben hast . face-surprise face-surprise

Danke nochmal

MfG Karsten