pantherstyle
Goto Top

Sprung in for Schleife

Hallo,
ich hoffe, dass es okay ist wenn ich zwei Fragen parallel einstelle (2 unterschiedliche Batches und Probleme). Ich habe folgenden Code:
Mit
DOS
::Überprüfen auf Dateiinhalt
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
for /F "skip=2 tokens=4* delims=\" %%i IN (%HELP_PATH%\filterindex.txt) DO (  
echo %%i
findstr /L /C:"$Id" %SEARCH_PATH%\%%i  
if ERRORLEVEL 1 echo %%i >> %HELP_PATH%\IDtreffer.txt
if ERRORLEVEL 1 goto weiter

findstr /L /C:"$Author" %SEARCH_PATH%\%%i  
if ERRORLEVEL 1 echo %%i >> %HELP_PATH%\IDtreffer.txt
if ERRORLEVEL 1 goto weiter

findstr /L /C:"$URL" %SEARCH_PATH%\%%i  
if ERRORLEVEL 1 echo %%i >> %HELP_PATH%\IDtreffer.txt
if ERRORLEVEL 1 goto weiter

findstr /L /C:"$LastChangedRevision" %SEARCH_PATH%\%%i  
if ERRORLEVEL 1 echo %%i >> %HELP_PATH%\IDtreffer.txt
if ERRORLEVEL 1 goto weiter

findstr /L /C:"* $LastChangedDate" %SEARCH_PATH%\%%i  
if ERRORLEVEL 1 echo %%i >> %HELP_PATH%\IDtreffer.txt
if ERRORLEVEL 1 goto weiter

findstr /L /C:"* $LastChangedBy" %SEARCH_PATH%\%%i  
if ERRORLEVEL 1 echo %%i >> %HELP_PATH%\IDtreffer.txt
if ERRORLEVEL 1 goto weiter
:weiter
)

Der Quelltext soll bewirken, dass die Dateien eines Verzeichnisses durchsucht werden, ob eines oder mehrere der folgenden Textelemente fehlen:
$Id
$Author
$URL
$LastChangedRevision
etc.

Wenn ich das ganze ohne die goto Anweisung ausführenlasse, gibt er mir zwar alle gefundenen Dateien korrekt aus, allerdings die meisten doppelt und dreifach (da ja auch mehrere Bestandteile fehlen könnten). Kann ich das mit dem goto irgendwie korrekt umsetzen. Oder als If Verkettung oder ganz anders?

Content-Key: 112713

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

Printed on: April 26, 2024 at 02:04 o'clock

Member: SlainteMhath
SlainteMhath Mar 30, 2009 at 10:52:48 (UTC)
Goto Top
Hi,

versuchs mal so:

for /f.... do (
se flag=0
...
findstr /L /C:"* .....  
if ERRORLEVEL 1 set flag=1

findstr /L /C:"* .....  
...

if "%flag%"=="1" echo %%i >> ...  
)

lg,
Slainte
Mitglied: 60730
60730 Mar 30, 2009 at 10:53:27 (UTC)
Goto Top
Servus,

warum läßt du /C hinter Findstr nicht weg und fragst alle "Bestandteile" in einer Findstr Zeile ab?
Würde den Code kürzer machen und du hättest dein "Problem" mit den doppelTreffern dabei gelöst.

Gruß
Member: Pantherstyle
Pantherstyle Mar 30, 2009 at 10:56:08 (UTC)
Goto Top
Ich versteh den Ansatz nicht ganz und außerdem finde ich den se Befehl nicht. Falls du set meinst, ich habe es noch nicht hinbekommen innerhalb einer For-Schleife einer Variablen einen anderen Wert zuzuweisen. Sorry. Falls du es anders meinst bitte korrigieren!
Member: Pantherstyle
Pantherstyle Mar 30, 2009 at 11:15:36 (UTC)
Goto Top
Ich habe den Code jetzt einmal ausgetauscht, allerdings liefert er mir nicht die gewünschten Ergebnisse.

::Überprüfen auf Dateiinhalt
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
for /F "skip=2 tokens=4* delims=\" %%i IN (%HELP_PATH%\filterindex.txt) DO (  
echo %%i
findstr /L :"$Id $Author $URL $LastChangedRevision $LastChangedDate $LastChangedBy" %SEARCH_PATH%\%%i  
if ERRORLEVEL 1 echo %%i >> %HELP_PATH%\IDtreffer.txt
)

Ich habe 5 Falsche und 2 Richtige Dateien. Die Richtigen (also korrekten) Dateien gibt er mir wie gewünscht nicht aus.

Beispiel für Ausgegebene Datei:

oisanoi
aodvn
sjkdncöoi
uhv$
aiusdfb
  • $
$Id

Beispiel für eine Datei die ausgegeben werden sollte aber nicht wurde:
  • $Id$
      • $URL$
  • $LastChangedRevision$
  • $LastChangedDate$
  • $LastChangedBy$

Beispiel für Datei die zurecht nicht ausgegeben wurde:
    • $Id$
    • $Author$
    • $URL$
    • $LastChangedRevision$
    • $LastChangedDate$
    • $LastChangedBy$

Ziel ist es ALLE Dateien zu finden, die auch nur eine der 6 Varianten NICHT enthalten. Warum gibt er also so unlogische Treffer aus?
Member: bastla
bastla Mar 30, 2009 at 13:20:35 (UTC)
Goto Top
Hallo Pantherstyle!

Da "$" in einem "findstr"-Suchbegriff für "Zeilenende" steht, muss es "maskiert" werden. Versuch es einmal mit folgender Zeile:
findstr /L :"\$Id \$Author \$URL \$LastChangedRevision \$LastChangedDate \$LastChangedBy" %SEARCH_PATH%\%%i
Grüße
bastla
Member: Pantherstyle
Pantherstyle Mar 30, 2009 at 13:34:41 (UTC)
Goto Top
Supi ich freue mich hat soweit super geklappt ich danke!