killer-loop
Goto Top

Wie generiere ich eine Pfadangabe zu Dateien mit vob endung für ein inputscript um Handbrake zu automatisieren

Hallo erstmal, ^^
ich hab hier ne menge toller scripts gelesen und dachte mir hier kann mir sicher einer helfen. Danke schon mal für alles.

Also nun zu meinem eigentlichen Problem:
Ich habe mir ein Script geschrieben um eingentlich alle einstellungen für Handbrake zu Automatisieren (Wers nicht kennt ein ziemlich praktischer Video Encodierer ^^)

Nun müsste ich nur noch das Problem mit der generierung der Eingangsverzeichnisse lösen auf die ich mit mein Script zugreifen kann.
Ich hätte mir gedacht dass ich alle Ordner die vob files beinhalten in eine Datei schreibe und die ich dann zeilenweise verarbeite.

Das ganze für ISO files zu lösen war eigentlich kein Probelem da ich mit dir /b/a-d /s *.iso >> dateien.txt eine Datei generieren konnte die ich gebrauchen konnte.
Jetzt würde ich das ganze auch noch für die vob files lösen wollen dazu bräuchte ich was mit dem ich den Pfad zur Datei hin in eine textfile schreiben könnte, außerdem sollte die Pfadangabe nur einmal auftauchen, was sie nicht tun würde wenn ich wieder einfach nen befehl mit dir *.vob mache da ja mehrer vob files in einem dvd ordner sind.

Ich hätte mir überlegt dir /b/a-d /s *.vob >> dateien.txt
in eine Datei zu schreiben das ganze mit einer for schleife auszulesen mit "delimes=\" zu seperieren und den letzten tokken zu löschen.
Leider krieg ich das nicht mit der syntax gebacken...... heul face-smile ......
und dann wäre ja immer noch das Problem das die Pfadangabe nur einmal in der textdatei auftauchen soll ......


danke schon mal für die hilfe

cya

Content-Key: 158519

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

Printed on: April 23, 2024 at 14:04 o'clock

Mitglied: 60730
60730 Jan 12, 2011 at 20:30:17 (UTC)
Goto Top
moin,

schreib doch mal deine bisherigen versuche auf?

Demos für dich zum spielen....

for /f %a in ('dir /b /s laufwerk:\pfad\*.vob') do echo %a  
...liefert "alles"
for /f %a in ('dir /b /s laufwerk:\pfad\*.vob') do echo %a>>laufwerk:\pfad\text.txt  
... in eine Datei

for /f %a in ('dir /b /s laufwerk:\pfad\*.vob') do echo %~dpa>>laufwerk:\pfad\text.txt  
..nur den Pfad
for /f %a in ('dir /b /s laufwerk:\pfad\*.vob') do echo %~nxa>>laufwerk:\pfad\text.txt  
..nur den Dateinamen
findstr "wert" Datei  
...findet den wert in der Datei (oder auch nicht)
|| bedeutet unwahr
&& bedeutet wahr

for /f %a in ('dir /b /s laufwerk:\pfad\*.vob') do findstr "%~dpa" laufwerk:\pfad\text.txt || echo "%~dpa" >>laufwerk:\pfad\text.txt && echo %~nxa>>laufwerk:\pfad\text.txt  

Ich hoffe mit diesem Satz von ungetesteten Schnippseln habe ich dich in die richtige Richtung geschubst - weiteres in der schwarzen Dosbox unter
for /?

Gruß
Member: bastla
bastla Jan 12, 2011 at 20:36:40 (UTC)
Goto Top
... und für den Fall, dass es in den Pfaden auch mal Leerzeichen gäbe:
for /f "delims=" %a in ('dir /b /a-d /s "laufwerk:\pfad\*.vob"') do echo %a
und dann auch:
findstr /c:"wert" "Datei"
- daher:
for /f "delims=" %a in ('dir /b /a-d /s "laufwerk:\pfad\*.vob"') do findstr /i /x /c:"%~dpa" "laufwerk:\pfad\text.txt">nul || >>"laufwerk:\pfad\text.txt" echo %~dpa 
Damit "findstr" beim ersten Pfad kein Problem hat, musst Du dafür sorgen, dass es bereits eine "laufwerk:\pfad\text.txt" gibt - etwa durch
type nul>"laufwerk:\pfad\text.txt"
Falls Dir jetzt aufgefallen ist, wie oft hier "laufwerk:\pfad\text.txt" vorkommt, wird (hoffentlich) auch bei Dir der Wunsch entstehen, dafür eine Variable zu verwenden ...

Grüße
bastla

P.S.: Die abschließenden "\" in den gespeicherten Pfaden sollten eigentlich nicht stören ... [Edit] Tun sie aber doch, wenn auch nicht die aus den gespeicherten Pfaden... face-sad [Edit]
Member: Killer-Loop
Killer-Loop Jan 14, 2011 at 05:09:13 (UTC)
Goto Top
Danke für die Schnelle Antwort!!!
Bin leider noch nicht dazu gekommen mich mit den paar sachen zu Spielen.

cya
Member: Killer-Loop
Killer-Loop Jan 15, 2011 at 20:36:26 (UTC)
Goto Top
Hoi,
also ich hab jetzt mal nen bischen mit den sachen gespielt.....
aber irgend wie krieg ich des nicht gebacken wenn ich auch nur eine der sachen probiere und die pfadangaben anpasse bricht das script ab......

irgend ne idee

cya
Member: bastla
bastla Jan 15, 2011 at 20:41:35 (UTC)
Goto Top
Hallo Killer-Loop!

Poste doch einfach einmal Deinen aktuellen Stand ...

... wobei ich zugeben muss, dass mein "P.S.:" von oben leider nicht ganz haltbar ist face-sad - daher wird's doch etwas aufwändiger:
@echo off & setlocal
set "Basis=D:\Dein Videoordner"  
set "Liste=D:\Ordnerliste.txt"  

type nul>"%Liste%"  
for /f "delims=" %%a in ('dir /b /a-d /s "%Basis%\*.vob" 2^>nul') do set "Pfad=%%~dpa" & call :ProcessFolder  
goto :eof

:ProcessFolder
set "Pfad=%Pfad:~,-1%"  
findstr /i /x /c:"%Pfad:\=\\%" "%Liste%">nul || >>"%Liste%" echo %Pfad%  
goto :eof
Als Hinweis: Da mit "\" in einem Suchbegriff das folgende Zeichen "maskiert" wird, muss, um tatsächlich nach "\" zu suchen, dieser verdoppelt werden ...

Grüße
bastla
Member: Biber
Biber Jan 15, 2011 at 20:45:07 (UTC)
Goto Top
Nachtrag von mir:

Sei froh, dass bastla vor mir reagiert hat - mein Kommentar wäre etwas anders ausgefallen bei deiner Fehlerbeschreibung gefolgt von

irgend ne idee


Grüße
Biber
Member: Killer-Loop
Killer-Loop Jan 16, 2011 at 06:40:06 (UTC)
Goto Top
AHHHHH, sorry mein fehler ... XX
und danke das ich nicht in die Steinzeit gebommt worden bin.. ^^

lag denke ich an dem "setlocal"
aber wieseo was macht des überhaupt

wird nicht wieder vorkommen mit einer unzuordnenbaren fehlermeldung.

danke ....

cya
Member: bastla
bastla Jan 16, 2011 at 08:14:12 (UTC)
Goto Top
Hallo Killer-Loop!
AHHHHH, sorry mein fehler ... XX
lag denke ich an dem "setlocal"
Soferne Du tatsächlich etwas bezüglich Batch-Erstellung (und nicht nur eine punktuelle Lösung) mitnehmen willst, solltest Du trotzdem Deinen Ansatz posten - das "setlocal" würde ich in diesem Fall als Fehlerursache nämlich eher ausschließen ...
aber wieseo was macht des überhaupt
Soferne es keinen Zusatz (insbesondere "enabledelayedexpansion") hat, sorgt es nur dafür, dass Änderungen an Variablen (dazu zählt auch das Erstellen solcher) auf den aktuellen Batch (bzw genauer: bis zum nächsten "endlocal", und ein solches wird am Batchende automatisch ausgeführt) beschränkt bleiben - insbesondere beim Testen (in der gleichen CMD-Shell) nicht unwichtig, damit nicht Variablenwerte von früheren Versuchen die Interpretation verfälschen.

Für die meisten Batches gilt, dass Du "setlocal" unbesehen an den Anfang setzen kannst und sich daraus keine negativen Nebenwirkungen ergeben ...

Grüße
bastla
Member: Killer-Loop
Killer-Loop Jan 17, 2011 at 10:26:16 (UTC)
Goto Top
danke für die schnelle hilfe !!!!!
ich hab das hinbekommen was ich machen wollte face-wink.
Nur nur verstehe ich es noch nicht ganz... face-smile ... Ich lese mir gerade nen paar tutorials durch um dahinter zu kommen.

Bei fragen dazu soll ich die in dem Thread noch stellen oder gleich einen neuen aufmachen ????

cya

Nochmal danke für alles!!
Member: Biber
Biber Jan 17, 2011 at 11:31:34 (UTC)
Goto Top
Moin Killer-Loop,

Zitat von @Killer-Loop:
Bei fragen dazu soll ich die in dem Thread noch stellen oder gleich einen neuen aufmachen ????
Gerne.

Ich denke, damit spreche ich auch für bastla.

cya
ym2
Biber