sugram
Goto Top

FOR Schleife läuft nicht

Hallo


Ich glaube ich sehe den Wald vor lauter Bäumen nicht.
Aber ich bekomme die FOR Schleife nicht zum laufen.
Ziel ist, aus einem Verzeichnis in mehreren html Files etwas auszulesen.

Aktuell sieht meine FOR so aus

set "Ziel=C:\temp"  
pushd %ziel%

for /f  %%i in ('dir /b  *.html') do call :Process %%i  
goto :exit

:Process 
for /f %%a in ('type %1') do (echo %%a")  
goto :eof

:exit
@echo test

Aktuell erhalte ich hier dann in der Console die Meldung

c:\temp>for /F %i in ('dir /b c:\temp\*.html') do call :Process %i  

c:\temp>call :Process 1_Stp01-20160608-081803181.html
The syntax of the command is incorrect.

Aber ich komme aktuell nicht drauf weshalb er hier nicht weiterarbeitet.

Content-ID: 306657

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

Ausgedruckt am: 17.11.2024 um 19:11 Uhr

Arano
Arano 09.06.2016 aktualisiert um 13:29:12 Uhr
Goto Top
Hi,

habe kein Windows darum ein Schuss ins Blaue:
Das Anführungszeichen in Zeile 8 Zeichen 38.
Das sieht für mich an dieser stelle jedenfalls syntaktisch falsch aus.
Oder nach dem "echo" fehlt noch eines !?
Da über die Variable %%a eine Zeichenkette ausgegeben werden soll, würde ich sie bevorzugt in Anführungszeichen stellen.

~Arano
Kraemer
Kraemer 09.06.2016 aktualisiert um 13:45:02 Uhr
Goto Top
Habe gerade keine Lust mir das genau anzusehen - aber auf die Schnelle folgende Fehler:


 set "Ziel=C:\temp"  
muss
 set Ziel="C:\temp"  


 for /f  %%i in ('dir /b  *.html') do call :Process %%i  
muss
 for /f  %%i in ('dir /b  *.html') do call:Process %%i  
Arano
Lösung Arano 09.06.2016 um 14:13:36 Uhr
Goto Top
Nee, stimmt beides nicht !
Kann vielleicht aber muss nicht.

Hier im Forum sieht man die Definition der Variablen oft in der Form: set "myVar=Value" z.B. vom User @Biber
Ein Grund dafür dürfte/könnte das Löschen eines Variablenwertes sein: set "myVar=" ohne die Anführungszeichen schreibt man schnell noch mal ein Leerzeichen in die Variable und schon sucht man sich nen Wolf weil man es nicht sehen kann.

Und zu letzterem kann ich nur sagen das ich das so noch nie gesehen habe. Kann funktionieren... ist aber auch kein muss.

http://fisibits.de/2014/05/batch-programmierung-variablen/
https://de.wikibooks.org/wiki/Batch-Programmierung:_Batch-Befehle#CALL

~Arano
sugram
sugram 09.06.2016 aktualisiert um 15:26:59 Uhr
Goto Top
Erstmal vielen Dank.

die Zeichen bei 'dir /b ... ' sind schon richtig.
Das " hinter dem %%a war zuviel. Das kommt vom rumtesten face-wink

Ich habe es abgeändert, allerdings ohne Erfolg.

set Ziel="c:\temp\"   

pushd %ziel%

for /f  %%i in ('dir /b  *.html') do call:Process %%i  

goto :eof



So, fragt mich nicht warum, aber nun gehts face-wink

@echo on
set "Ziel=c:\temp\"   

pushd %ziel%

for /f  %%i in ('dir /b *.html') do call:Process %%i  
goto :exit

:Process 
for /f "delims=" %%a in ('"type %1 | findstr TimeStampCust "') do (echo %%a >>BC)  
goto :eof

:exit
popd