3xplor3r
Goto Top

Vergleich zweier Laufzeitvariablen

Hallo,

ich habe einen Fall bei dem ich im Moment nicht mehr weiter weiß. Zuerst das Coding also Ausschnitt.

[...]
for /r "%download%" %%i in (*.mp3) do (  
  for /f "tokens=1-9* delims=\" %%j in ("%%i") do (  
    if exist "%tag%\pfad.txt" (  
      for /f "tokens=* usebackq" %%t in ("%tag%\pfad.txt") do (  
        if %%j\%%k\%%l\%%m\%%n\%%o\%%p\%%q\%%r==%%t (
          echo 1 > "%tag%\schalter.txt"  
	)
      )
  )
	
  if not exist "%tag%\schalter.txt" (  
    echo %%j\%%k\%%l\%%m\%%n\%%o\%%p\%%q\%%r >> "%tag%\pfad.txt"  
  )
[...]

Die erste Schleife geht die Verzeichnisse ab dem %download%-Verzeichnis durch. Die zweite Schleife ist zum Splitten des Pfades aus der ersten Schleife. Dann prüfe ich, ob die Textdatei "pfad.txt" bereits vorhanden ist. Wenn nicht gehts mit der Prüfung weiter, ob die schalter.txt vorhanden ist. Wenn nicht, wird der erste Pfad bis zum vorletzten Ordner in die Textdatei "pfad.txt" geschrieben.

Jetzt gehts nochmal den gleichen Weg entlang, in der Textdatei "pfad.txt" steht jetzt ein Eintrag. Der nächste zu verarbeitende Datensatz ist nicht gleich. Folgerichtig geht er bei der zweiten Prüfung if %%j%%k ... ==%%t zur nächsten Prüfung.

Es kommt allerdings beim dritten Durchlauf der Moment, wo der Elefant ins Wasser rennt. Es stehen zwei Einträge in der Textdatei "pfad.txt", die beide ungleich sind. Jetzt kommt der nächste zu verarbeitende Datensatz, der gleich dem letzten, also zweiten Datensatz in der Textdatei ist, und bei der Prüfung if %%j%%k ... ==%%t wird ebenfalls keine Übereinstimmung gefunden. Warum?

Hier noch der Inhalt der Textdatei "pfad.txt" nach einem Durchlauf, also drei Datensätzen.

C:\Dokumente und Einstellungen\benutzername\Eigene Dateien\Musik\Workarea\Workspace\Download\Album1 
C:\Dokumente und Einstellungen\benutzername\Eigene Dateien\Musik\Workarea\Workspace\Download\Album2
C:\Dokumente und Einstellungen\benutzername\Eigene Dateien\Musik\Workarea\Workspace\Download\Album2

Den dritten Eintrag dürfte es bei erfolgreicher Durchführung nicht geben. Sinn dahinter ist, dass ich keine Duplikate in der Textdatei möchte. Man könnte jetzt nachträglich alle Duplikate entfernen, aber warum entfernen, wenn man schon beim Einfügen auschließen kann.

LG
3x

Content-Key: 177671

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

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

Member: Skyemugen
Skyemugen Dec 14, 2011 at 09:42:54 (UTC)
Goto Top
Aloha,

also mich wundert, dass bei
if %%j\%%k\%%l\%%m\%%n\%%o\%%p\%%q\%%r==%%t
nicht die Fehlermeldung kommt:
Dateien\Musik\Workarea\Workspace\Download\Album1==C:\Dokumente ist syntaktisch an dieser Stelle nicht verarbeitbar.
nichtsdestotrotz würde ich
if /i "%%j\%%k\%%l\%%m\%%n\%%o\%%p\%%q\%%r"=="%%t"  
verwenden face-wink

wobei würde statt
"%%j\%%k\%%l\%%m\%%n\%%o\%%p\%%q\%%r" nicht auch "%%~dpi" genügen?

greetz André
Mitglied: 60730
60730 Dec 14, 2011 at 09:43:21 (UTC)
Goto Top
moin,

Vergleich zweier Laufzeitvariablen

lass mich raten setlocal enabledelayedexpansion gehört nicht zu dem ausgeblendeten Teil des Scripts.

Gruß

edit:
@ André

ich vermute, in Zeile einz ist eine Kombination von €cho und dem Namen der ersten Band von Sven Väth.
Member: 3xplor3r
3xplor3r Dec 14, 2011 at 09:47:37 (UTC)
Goto Top
Danke Euch beiden für Eure Antworten. Ich werde gleich mal beide Antworten erwidern.

Zu beiden Antworten kann ich sagen: Geht nicht, aber eins nach dem anderen.

Die Anfürungszeichen hatte ich auch schon gesetzt, ohne Erfolg. Dann hatte ich mir beide Variablen mal ausgegeben und festgestellt, dass diese zumindest in der Console gleich sind.

Darauf hin kam mir die Idee mit der Variablenverzögerung, obwohl ich sagen muss, dass ich die Funktionsweise noch nicht ganz verstanden habe. Auch hier kein Erfolg und selbe Textdatei wie vorher.

LG
3x