Moin Experten!
Meine Kamera erstellt bei der Aufnahme automatisch eine RAW Datei und eine JPG Datei.
Normalerweise reichen mir die Jpegs, aber wenn ich dann doch ein Photo bearbeiten will ziehe ich lieber die RAW datein heran.
Was will ich jetzt eigentlich hier?
Ich will eine delraw.bat datei machen, die RAWs löscht, von denen keine Jpegs vorhanden sind (weil ich sie aufgrund von Unschärfe und der gleichen gelöscht habe)
Beispiel:
IMG_1772.CR2
IMG_1772.JPG
Ich lösche IMG_1772.JPG, weil es unscharf ist. Dann führe ich die bat Datei aus und er kontrolliert, welche JPGs noch da sind und sieht, dass IMG_1772.JPG fehlt und löscht IMG_1772.CR2 somit.
Ich habe auch schon einige commands gefunden nur hab ich keine idee wie ich das aufbaun könnte?!
Mit freundlichen Grüßen,
hänsen
Hallo Hänsen!
Meine DOS-Zeit ist schon ein wenig her, aber an die meisten Dinge erinnert man sich ja quasi ewig.
Vom Grundsatz her sollte Dir folgende Zeile genügen:
for /F "delims=." %a in ('dir /B \*.cr2') do if not exist %a.jpg del %a.cr2
Es wird für jede vorkommende *.cr2 Datei nach dem .jpg Pendant gesucht. Existiert dieser nicht, wird die .cr2-Datei gelöscht.
Dazu musst Du natürlich im entsprechenden Verzeichnis stehen. Um das im Batch anzuwenden musst Du den Befehl noch erweitern (vorher ein Wechsel ins passende Verzeichnis und ggf. die Variablen anpassen).
Grüße
Andreas van de Langenberg
for /F „delims=.“ %a in (‚dir /B *.cr2‘) do if not exist
%a.jpg del %a.cr2
ich versuche mal den syntax zu verstehen:
for /F sagt, dass es eine Schleife ist?
delims versteh ich nicht ganz
%a ist eine variable in 'dir /B mit *.cr2 Endung?
Der Rest ist ohnehin klar.
Es wird für jede vorkommende *.cr2 Datei nach dem .jpg Pendant
gesucht. Existiert dieser nicht, wird die .cr2-Datei gelöscht.
Dazu musst Du natürlich im entsprechenden Verzeichnis stehen.
Um das im Batch anzuwenden musst Du den Befehl noch erweitern
(vorher ein Wechsel ins passende Verzeichnis und ggf. die
Variablen anpassen).
wie kann ich das machen, dass ich die BAT datei einfach nur in den gewünschten ordner schieben muss um sie dann auszuführen?
Grüße
Andreas van de Langenberg
Grüße zurück!
Hänsen
for /F „delims=.“ %a in (‚dir /B *.cr2‘) do if not exist
%a.jpg del %a.cr2
hallo Hansen,
for /F sagt, dass es eine Schleife ist?
nein, das sagt das for allein bzw. zusammen mit dem Do.
/f und delims sind Parameter von For
So wie es da steht klappt es im Prompt oder bei Start–Ausführen.
In einer Batch brauchst du doppelte Prozente.
for /F „delims=.“ %%a in (‚dir /B *.cr2‘) do if not exist %%a.jpg del %%a.cr2
delims versteh ich nicht ganz
Es gibt an an welchem zeichen %%a gesplittet werden soll.
%a ist eine variable in 'dir /B mit *.cr2 Endung?
Ja, Dir /b erzeugt eine Liste mit den Namen der dateien die die Endung .cr2 haben. %%a ist dann erst der erste Eintrag, im zweiten Durchlauf der zweite Eintrag usw.
Durch das delims dann nicht der volle Name sondern der Teil vor dem .cr2
Schau mal hier:
http://qitcon.de/index.php?id=93
Gruß
Reinhard
1 „Gefällt mir“
Ich hab mal folgendes ausprobiert:
for /F "delims=." %%a in ('dir C:\test \*.cr2') do if not exist %%a.jpg del %%a.cr2
Siehe hier:
http://dl.getdropbox.com/u/730936/Verzeichnis.jpg
http://dl.getdropbox.com/u/730936/Programm.jpg
Leider löscht er mir den ganzen ordner nachdem er mich gefragt hat ob ich es löschen will… kA wieso das nicht geht 
Ich würde wirklich gerne den Ordner abfragen wo ich mich grade befinde, also dass ich die bat datei einfach nur in das entsprechende zu kontrollierende verzeichnis schieben muss und er automatisch in dem verzeichnis seine kontrolle durchführt.
Mit freundlichen Grüßen,
Hänsen
for /F „delims=.“ %%a in (‚dir C:\test *.cr2‘) do if not exist
%%a.jpg del %%a.cr2
Hallo Hansen,
Leider löscht er mir den ganzen ordner nachdem er mich gefragt
hat ob ich es löschen will… kA wieso das nicht geht 
Mir nicht unklar warum da der gelöscht wird. probier mal das da:
del C:\test\del.txt
for /F „delims=.“ %%a in (‚dir C:\test *.cr2‘) do if not exist %%a.jpg echo %%a >>C:\test\del.txt
In del.txt müßten dann alle zu löschenden namen drinstehen. Ist der Ordnername dabei? kaum glaub.
Ich würde wirklich gerne den Ordner abfragen wo ich mich grade
befinde, also dass ich die bat datei einfach nur in das
entsprechende zu kontrollierende verzeichnis schieben muss und
er automatisch in dem verzeichnis seine kontrolle durchführt.
? Stell die bat doch in den betrffenden Ordner. Ansonsten verstehe ich das nicht ganz.
Gruß
Reinhard
del C:\test\del.txt
for /F „delims=.“ %%a in (‚dir C:\test *.cr2‘) do if not exist
%%a.jpg echo %%a >>C:\test\del.txt
In del.txt müßten dann alle zu löschenden namen drinstehen.
Ist der Ordnername dabei? kaum glaub.
Das steht in der del.txt:
Volume in Laufwerk C: hat keine Bezeichnung
Volumeseriennummer: DC25-B327
Verzeichnis von C:\test
24
24
24
24
24
24
24
24
24
24
24
24
24
24
Verzeichnis von C:\test
24
24
24
24
24
17 Datei(en) 161
2 Verzeichnis(se), 3
? Stell die bat doch in den betrffenden Ordner. Ansonsten
verstehe ich das nicht ganz.
achso… der macht automatisch das Verzeichnis in dem die bat datei ist zum Arbeitsverzeichnis? Wusste ich nicht 
Mit freundlichen Grüßen,
Hänsen!
Im übrigen:
Die Ausgabe des CMD Fensters, falls es hilft:
http://dl.getdropbox.com/u/730936/CMD.jpg
hallo Hansen,
irgendwie ist /b auf der Strecke geblieben, probiers mal s o:
(ich hab .txt genommen weil ich keine .cr2 habe)
del C:\test\del.txt
for /F „delims=.“ %%a in (‚dir /b C:\test *.txt‘) do if not exist %%a.jpg echo %%a >>C:\test\del.txt
achso… der macht automatisch das Verzeichnis in dem die bat
datei ist zum Arbeitsverzeichnis? Wusste ich nicht 
Ja, ohne Einsatz von CD „arbeitet“ die bat da wo sie drinsteht.
Gruß
Reinhard
del C:\test\del.txt
for /F „delims=.“ %%a in (‚dir /b C:\test *.txt‘) do if not
exist %%a.jpg echo %%a >>C:\test\del.txt
ich hab mal alles aufgebaut und da passt irgendwas nicht 
http://dl.getdropbox.com/u/730936/Problems.jpg
Was heißt eigentlich das /b?
Und was muss ich statt
in ('dir /b C:\test \*.txt')
schreiben, damit er nur im lokalen verzeichnis, in dem die bat datei ist arbeitet?
Kann das ein problem sein, dass das in wirklichkeit leere .doc files sind, denen ich einfach eine endung *.jpg bzw. *.cr2 gegeben habe? (sie heißen nicht *.doc.jpg, keine angst!)
Mit freundlichen Grüßen,
Hänsen
Hallo Hansen,
Was heißt eigentlich das /b?
Lass mal die nachstehende Bat laufen und schau dir dirfor.txt an.
Und was muss ich statt
in (‚dir /b C:\test *.txt‘)
schreiben, damit er nur im lokalen verzeichnis, in dem
die bat datei ist arbeitet?
Sorry, mein Fehler, es muß
(‚dir /b C:\test*.txt‘)
heißen.
Oder ohne Pfad
(‚dir *.txt‘)
Vielleicht kommen einige Probleme daher wenn du Leerzeichen im Namen hast.
In eine bat schreiben:
echo D I R > c:\test\dirfor.txt
help dir >> c:\test\dirfor.txt
echo >> c:\test\dirfor.txt
echo >> c:\test\dirfor.txt
echo F O R >> c:\test\dirfor.txt
help for >> c:\test\dirfor.txt
Gruß
Reinhard
1 „Gefällt mir“
hab mal die leerzeichen rausgegeben und den pfad weggelassen und es funktioniert ohne probleme 
DANKE!
Der fertige Code so wie ich ihn jetzt drinnen stehn hab:
del C:\test\del.txt
for /F "delims=." %%a in ('dir /b \*.cr2') do if not exist %%a.jpg echo %%a.cr2 \>\>C:\test\del.txt
for /F "delims=." %%a in ('dir /b \*.cr2') do if not exist %%a.jpg del %%a.cr2
pause