konrad123
Goto Top

Dateien mit gleichem Namen und unterschiedlichen Endungen ausschließen

Hallo Ich habe hier auf der Seite eine Script entdeckt das ich gerne umschreiben wollte. Ich bräuchte dabei jedoch Hilfe.
https://www.administrator.de/index.php?content=53970

Ich habe einen Ordner mit Filmaaufnahmen im .ts Format. Nun bräuchte ich ein Script das kontrolliert ob es zu den .ts Dateien gleichnamige .txt Dateien gibt.
Falls ja soll nichts gemacht werden und falls nein sollte ein externes Programm ( Comskip ) gestartet werden.
Ich denke das Script von Dateien mit gleichem Namen und unterschiedlichen Endungen finden ist genau das was ich suche nur ist mir nicht klar wie ich die Ausgabe so abändern kann das er mir immer die .ts Dateien OHNE .txt ausgibt und dann weiterverarbeiteten.
Könnte jemand von euch mir da bitte Hilfestellung geben? Danke im vorraus.

Content-Key: 118041

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

Printed on: April 24, 2024 at 17:04 o'clock

Mitglied: 60730
60730 Jun 12, 2009 at 11:45:46 (UTC)
Goto Top
Servus,

so aus dem Bauch und der Hüfte geschossen, sollte dir die Zeile weiterhelfen...

for %%i in (Ordner mit Filmaaufnahmen\*.ts) do if not exist "%%~ni.txt" Comskip "Ordner mit Filmaaufnahmen\%%i"  

gruß

edit ich hab noch ein % gekauft ... /edit
Member: konrad123
konrad123 Jun 12, 2009 at 13:30:57 (UTC)
Goto Top
Hallo,

danke für die schnelle Antwort. Also ich habs mit dieser Zeile versucht und habe eine .bat Datei erstellt.

for %%i in (e:\*.ts) do if not exist "%~ni.txt" C:\Comskip\comskiperik\comskip.exe "e:\%%i"

Leider bekomme ich dann immer die Meldung:


C:\Dokumente und Einstellungen\krutowski\Desktop>aufnahmen.bat
Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters
ist ungültig: %~ni.txt" C:\Comskip\comskiperik\comskip.exe "e:\%%i"

Geben Sie CALL /? oder FOR /? ein, um herauszufinden, welche Formate gültig
sind.
"aufnahmen.bat" ist syntaktisch an dieser Stelle nicht verarbeitbar.

C:\Dokumente und Einstellungen\krutowski\Desktop>for %i in (e:\*.ts) do if not e
xist ""%~ni.txt" C:\Comskip\comskiperik\comskip.exe "e:\%%i"
C:\Dokumente und Einstellungen\krutowski\Desktop>


Woran könnte das liegen ?
Danke
Member: Biber
Biber Jun 12, 2009 at 14:07:59 (UTC)
Goto Top
Moin konrad123,

Woran könnte das liegen ?
Was sagte denn die angegebene Quelle zur Problembehebung "CALL /?" oder "FOR /?" zu Dir?

Oder hast Du gar nicht nachgeschaut?
Um den FOR-Befehl in einem Batchprogramm zu verwenden, geben Sie %%Variable
statt %Variable an. Beachten Sie die Groß-/Kleinschreibung bei Variablen-
namen, %i und %I sind nicht identisch.

Übersetzt: nimm "%%~ni.txt" statt "%~ni.txt" .


Grüße
Biber
Member: konrad123
konrad123 Jun 12, 2009 at 14:49:52 (UTC)
Goto Top
Hallo,
ich hab nachgesehen aber ich kenn mich in der Sache nicht so aus und hab das ganze irgendwie nicht begriffen.
Kann ich das Script so ändern das damit auch die Unterordner durchsucht werden ? Meine Aufnahmen liegen alle in Unterordner.
Ich hab versucht das hier dir e:\*.ts /s /b /a-d in der Klammer einzufügen doch das funktioniert wohl nicht.
Danke im vorraus.
Member: Biber
Biber Jun 12, 2009 at 15:00:42 (UTC)
Goto Top
Moin konrad123,

die ursprüngliche Ansage war doch "Ich habe einen Ordner mit Filmaufnahmen"..

Klappt denn die von mir tippfehlerberichtigte T-Mo-Lösung jetzt?


Wenn ja, dann können wir ja verfeinern... vorher nicht.
Zum Verfeinern sollte allerdings eine Änderung von

Jetzt: ... if not exist "%%~ni.txt" Comskip "Ordner mit Filmaaufnahmen\%%i" in ein..
--> Phase 2: ... if not exist "%%~dpni.txt" Comskip "%%~fi"
genügen.

Grüße
Biber
Member: konrad123
konrad123 Jun 12, 2009 at 16:15:58 (UTC)
Goto Top
Hallo Biber,

danke für deine Hilfe. Ja das war mein Fehler es ist ein Ordner und die Filmaufnahmen sind teilweise in Unterordner, daran hab ich nicht gedacht.
Das Script funktioniert nach der Korrektur super.
Meinst du so:
for %%i in (F:\aufnahmen\card1\*.ts) do if not exist "%%~ni.txt" "D:\comskip\PostProcessing.bat" "F:\aufnahmen\card1\%%i"
in
for %%i in (F:\aufnahmen\card1\*.ts) do if not exist "%%~dpni.txt" "D:\comskip\PostProcessing.bat" "%%~fi"

Grüße
Konrad
Member: Biber
Biber Jun 12, 2009 at 18:10:10 (UTC)
Goto Top
Ja nee, konrad123,

Meinst du so:
Öhmm... nicht wortwörtlich... im Prinzip ja...

Nochmal ein Versuch...

Das Fragment..
for %%i in (F:\aufnahmen\card1\*.ts) do if not exist "%%~dpni.txt"
ist richtig, aber bezieht sich wegen des "FOR %%i in (EINVERZEICHNIS\*.ts)" natürlich auf genau ein Verzeichnis.

Du brauchst doch aber etwas für die Abarbeitung von einem Verzeichnis und dessen Unterverzeichnissen.
Dazu wiederum kannst Du
  • entweder eine [[FOR /F]] -Anweisung bezogen auf ein 'Dir F:\aufnahmen\card1\*.ts /b /s /a-d' als Inhalt der Klammer benutzen
  • oder aber eine [[ FOR /R "F:\aufnahmen\card1\" %%i in (*.ts) DO whatever]]

Bitte schau noch mal kurz in die FOR /? -Hilfe und teste die beiden Varianten a) FOR/F+Dir-Output b) FOR /R rekursives Durchrödeln an.

Sonst reden wir aneinander vorbei und Du bekommst keinen Batch, den Du selber pflegen/verfeinern kannst.

Grüße
Biber
Member: konrad123
konrad123 Jun 13, 2009 at 08:34:01 (UTC)
Goto Top
Hallo Biber,

danke für deine Hilfe. Es hat mit beiden Varianten funktioniert. Ich lass jetzt mal durchlaufen und seh dann ja ob alles abgearbeitet wurde.
Vielen Dank du hast mir sehr geholfen.

Gruß Konrad