Batchbrainstorming gesucht

06/07/2012 - 15:08 von Ulrich F. Heidenreich | Report spam
Guten Morgen!

Gegeben sei folgender Batch für das unterm Win95 laufende DOS:

|net use T: \\serverbook\sdcard
|T:
|cd \dcim\101_pana
|for %%x in (*.tif) do if not exist g:\cambilder\%%x copy %%x g:\cambilder
|for %%x in (*.jpg) do if not exist g:\cambilder\jpg\%%x copy %%x g:\cambilder\jpg
|cd \dcim\100NCD50
|for %%x in (*.jpg) do if not exist g:\cambilderikon\%%x copy %%x g:\cambilderikon
|for %%x in (*.nef) do if not exist g:\cambilderikon\%%x copy %%x g:\cambilderikon
|c:
|net use T: /delete

Was es tun soll, dürfte offensichtlich sein: Die Inhalte einer in zwei
Kameras genutzer SD-Karte auf die Festplatte verteilen. Der Zielrechner
hat keinen SD-Slot, schadt aber nix, weil ich den vom Quellrechner aus
im Netz freigebe.

Was es aber tut, wenn eine Karte drinsteckt, auf der sich gar kein
"\dcim\100NCD50" befindet, ist nicht ganz so schnell absehbar. Richtig:
Es kopiert die Panasonic-jpgs ins Nikon-Zielverzeichnis.

"cd" liefert leider keinen Errorlevel, auf daß ich das auf diesem Wege
verhindern könnte. Ein Konstrukt wie

|if exist \dcim\101_pana\*.* goto pana
|if exist \dcim\100NCD50\*.* goto nikon

krankt daran, nicht zu funktionieren, falls beide Quellverzeichnisse
neue Bilder enthalten. Je nach Reihenfolge gewinnt da entweder Nikon
oder Panasonic.

Jemand eine zündende Idee?

TIA,
Ulrich
Heiteres Orteraten: Wo liegt eigentlich http://u1h.eu/wo.jpg ?
In 5 Monaten und 19 Tagen ist Weihnachten
XCA4W 9UYZH SC5IC XCTN3 057SG BYTGE N4YCH 8EL0F WM9BA
Stellt euch vor, es ist Freitag und keiner geht hin!
 

Lesen sie die antworten

#1 Heiko Rost
06/07/2012 - 16:33 | Warnen spam
Am Fri, 06 Jul 2012 15:08:35 +0200 schrieb Ulrich F. Heidenreich:

Was es aber tut, wenn eine Karte drinsteckt, auf der sich gar kein
"\dcim\100NCD50" befindet, ist nicht ganz so schnell absehbar. Richtig:
Es kopiert die Panasonic-jpgs ins Nikon-Zielverzeichnis.



Vorher in ein Verzeichnis wechseln, das garantiert existiert und keine
Bilder enthàlt, z. b.

|net use T: \\serverbook\sdcard
|T:
|cd \dcim\101_pana
|for %%x in (*.tif) do if not exist g:\cambilder\%%x copy %%x g:\cambilder
|for %%x in (*.jpg) do if not exist g:\cambilder\jpg\%%x copy %%x g:\cambilder\jpg
cd \
|cd \dcim\100NCD50
|for %%x in (*.jpg) do if not exist g:\cambilderikon\%%x copy %%x g:\cambilderikon
|for %%x in (*.nef) do if not exist g:\cambilderikon\%%x copy %%x g:\cambilderikon
|c:
|net use T: /delete


"cd" liefert leider keinen Errorlevel, auf daß ich das auf diesem Wege
verhindern könnte. Ein Konstrukt wie

|if exist \dcim\101_pana\*.* goto pana
|if exist \dcim\100NCD50\*.* goto nikon

krankt daran, nicht zu funktionieren, falls beide Quellverzeichnisse
neue Bilder enthalten. Je nach Reihenfolge gewinnt da entweder Nikon
oder Panasonic.



Auf Nichtexisitenz prüfen und nur den entsprechenden Teil überspringen:

|net use T: \\serverbook\sdcard
|T:
if not exist \dcim\101_pana\*.* goto No_Pana
|cd \dcim\101_pana
|for %%x in (*.tif) do if not exist g:\cambilder\%%x copy %%x g:\cambilder
|for %%x in (*.jpg) do if not exist g:\cambilder\jpg\%%x copy %%x g:\cambilder\jpg
:No_Pana
if not exist \dcim\100NCD50\*.* goto No_Nikon
|cd \dcim\100NCD50
|for %%x in (*.jpg) do if not exist g:\cambilderikon\%%x copy %%x g:\cambilderikon
|for %%x in (*.nef) do if not exist g:\cambilderikon\%%x copy %%x g:\cambilderikon
:No_Nikon
|c:
|net use T: /delete

Gruß Heiko

PS: Syntax nicht in der Praxis geprüft, da kein PC mehr mit command.com
verfügbar.

Ähnliche fragen