Annons

Spara RAW / JPG?

Produkter
(logga in för att koppla)

fredtiger

Aktiv medlem
Vill minnas att läst att någon på FS har gjort ett program för inläsning av filer från kameran så att RAW filen hamnar i en mapp och JPG filen i en annan (parallell) mapp.

Har sökt i trådarna, men kan inte hitta den. Någon som vet vad jag talar om och kan hjälpa mig?

//Fredrik M
 
Jag har gjort ett shell-script som gör det du ber om (i Linux), kan det hjälpa dig?

(Scriptet läser från kortläsaren och sorterar dem i kataloger med datum och därunder sorteras de i sin tur i olika kataloger för raw/jpg.)

Hälsningar,
Johan
 
Hej Johan!

Det är nog precis det jag frågar om. Dessvärre är jag en mainstreamare som kör i vista... antar att det inte funkar så bra då?

//Fredrik
 
Jag kan posta scriptet här, kanske kan någon som är mer hemma i Windows kommandovärld "översätta" det till något vettigt?

Detta går säkert att göra snyggare, men här är mitt förslag ;-)
=========================================
#!/bin/bash

cd /media/"NIKON D700"/DCIM/100ND700/
cp -av *.NEF $HOME/bilder/obehandlade/import/ | zenity --progress --pulsate --auto-close --auto-kill
cp -av *.JPG $HOME/bilder/obehandlade/import/ | zenity --progress --pulsate --auto-close --auto-kill
cd $HOME/bilder/obehandlade/import/

for i in *.NEF; do
FILEDATE="`ls -l $i|awk '{print $6}'`"
mkdir -p $FILEDATE/raw
FILENAME="`ls -l $i|awk '{print $8}'`"
DATEOFFILE="`ls -l $i|awk '{print $6}'`"
if [ "$DATEOFFILE" = "$FILEDATE" ]; then
mv -v $i $FILEDATE/raw
else
echo Falskt
fi
done

for i in *.JPG; do
FILEDATE="`ls -l $i|awk '{print $6}'`"
mkdir -p $FILEDATE/jpg
FILENAME="`ls -l $i|awk '{print $8}'`"
DATEOFFILE="`ls -l $i|awk '{print $6}'`"
if [ "$DATEOFFILE" = "$FILEDATE" ]; then
mv -v $i $FILEDATE/jpg
else
echo Falskt
fi
done

/usr/bin/nautilus --no-desktop ~/bilder/obehandlade/import/
=========================================

Hoppas någon kan ta vid, är tyvärr näst intill helt okunnig inom Windows-världen.
 
Med bat-filer (som ovan) kan man göra mycket, vet dock inte hur det funkar i vista men i xp pro och bakåt går det.Om du vill lägga jpg-filer i en mapp och raw-filer i en annan så är det mycket enkelt. T ex:

läs in alla filer/bilder till en mapp som heter "jpg", dubbelklicka på bat-filen så flyttar den alla raw-filer till en mapp som heter "raw". Kvar i mappen "jpg" blir jpg-filerna. Det går att få bilderna sorterade osv också men ovanstående kräver mycket lite jobb (en rad kommandon i en textfil som man sedan ändrar filändelsen till .bat istället för .txt). Det går naturligtvis att göra detta på andra sätt också.

Men som sagt, jag har inte provat i vista. Men det går ju alltid att testa med kopior innan. Om du inte hittar programet du letar efter.
 
Ett Windows-script

Jag har labbat lite på jobbdatorn, som givetvis kör Windows (XP), och fick ihop ett script som nästan gör det som mitt ursprungliga script gör. Skillnaden är att ursprungsscriptet skapar en struktur med

Bildernas datum/raw resp /jpg

för alla bilder.
Windowsscriptet kan inte läsa bildernas datum utan skapar en katalog med dagens datum och lägger två kataloger därunder, en för jpg och en för raw.
Scriptet läser och kopierar från minneskortet, så det enda man behöver göra är att stoppa i minneskortet i läsaren och köra scriptet.

Beroende på var minneskortet dyker upp hos dig kan du behöva redigera sökvägen till det och även sökvägen till den plats du vill att bilderna ska hamna. Hos mig hamnade minneskortet på enhet e:, men Windows verkar inte kunna göra så att det hamnar på samma plats jämt: om e: är upptagen antar jag att det försöker montera det på nästa lediga enhetsbokstav.

Nåväl, här kommer det. Kopiera innehållet och lägg det t ex på skrivbordet, högerklicka och välj redigera, så öppnas det för redigering och du kan kika igenom det först. Sen måste du döpa det till .bat på slutet för att Windows ska begripa att det är ett script.

När det är färdigt, signalerar det detta genom att öppna utforskaren i aktuell import-katalog.
Notera att du inte behöver installera programmen från föregående post, då jag inte fick till det riktigt...

=========================================================
c:
cd \
e:
cd \
cd DCIM\100ND700\
copy *.NEF C:\"Documents and Settings"\DITT ANVÄNDARNAMN\Desktop\bilder\obehandlade\import

copy *.JPG C:\"Documents and Settings"\DITT ANVÄNDARNAMN\Desktop\bilder\obehandlade\import

cd C:\"Documents and Settings"\DITT ANVÄNDARNAMN\Desktop\bilder\obehandlade\import

set FILEDATE=%DATE%
md %FILEDATE%\raw
md %FILEDATE%\jpg

move *.nef %FILEDATE%\raw
move *.jpg %FILEDATE%\jpg

explorer C:\"Documents and Settings"\Johan\Desktop\bilder\obehandlade\import

=========================================================

Hoppas det var lite åt det håll du eftersökte, någon som är duktigare än jag på Windowsshellprogrammering får översätta mitt ursprungliga script :)

Johan
 
Tackar så mycket Johan! Fantastiskt hjälpsamt. Dessvärre får jag inte det att fugnera rikgit. Kan bero på att jag läser in direkt från kameran och inte kan hitta/namnge enheten på rätt sätt. Så här ser skriptet ut efter att jag försökt modifiera det.

c:
cd \
canon eos 40d
cd \
cd DCIM\100canon\
copy *.CR2 C:\Users\public\import

copy *.JPG C:\users\public\import

cd C:\users\public\import

set FILEDATE=%DATE%
md %FILEDATE%\raw
md %FILEDATE%\jpg

move *.CR2%FILEDATE%\raw
move *.jpg %FILEDATE%\jpg

explorer C:\users\public\import


Canon eos 40d är inget giltigt kommando. Antar att cd\ x: behövs för att få det att fungera.

Sedan undrar jag också om det på femte raden ska vara en sökrad motsvarande: cf\DCIM\100Canon?

Ska nog få det här att fungera... så småningom!

//Fredrik
 
Hej Fredrik!

På tredje raden står det bara "Canon eos 40d" och Windows försöker tolka det som ett kommando (som ju inte finns). Kanske menar du att du ska gå till den katalogen? Om det finns mellanrum i t ex katalognamnet måste du skriva det inom citationstecken, t ex:

cd "Canon EOS 40D"

Stora eller små bokstäver tror jag kvittar i Windows.

För att byta enhet, t ex mellan hårddisken c: och minneskortet e: i mitt fall skrivs det på en rad med kommandot

c:

resp.

e:
Att skriva cd e:\ går tyvärr inte, rätt kommando är helt sonika e:

Det jag gjorde sen var att hoppa till roten av c:\ genom kommandot

cd \

och på motsvarande sätt på e:
Kanske är detta ett onödigt steg, men när jag satt och testade så kom Windows ihåg var man befann sig, och för att råda bot på det så skrev jag som jag gjorde i de översta fyra raderna :)

Om ditt minneskort dyker upp i utforskaren som e: bör de inledande raderna se ut så här (mina kommentarer finns bakom // skriv ej detta):

c: //förflytta dig till c-disken
cd \ //förflytta dig till roten av c-disken
e: //förflytta dig till e-disken
cd \ //förflytta dig till roten av e-disken
cd DCIM\100canon\ //förflytta dig till angiven katalog på e-disken
copy *.CR2 C:\Users\public\import

Om jag tolkat dig rätt så borde det funka!

Hör av dig igen om det inte löser sig!
Johan
 
Tackar igen för din hjälp. Får dessvärre inte rätt på det. Misstänker att ett problem är att jag kopplar kameran till datorn. Kan då inte se vilke enhet den ligger på (e:,f:, g:). Ska testa med en minneskortsläsare när jag får tillgång till en sådan. Tror annars att jag förstår mig på själva scriptet. Har trots allt lyckats bygga ett Yatzispel i Java under programmeringslab på Chalmers... dessvärre ganska inkopetent i praktiskt bruk av datorer och kodning. Mitt nyvunna fotointresse kommer nog att ändra på detta...

//Fredrik
 
Ok, då kanske jag slog in lite öppna dörrar där med kommentarerna... :)

Vore kul att veta hur det går sen när du testat med en läsare, och om du lyckas få till for-satsen i Windows; scriptet sparar åtminstone mig en hel del manuellt arbete i mitt arbetsflöde.

Johan
 
Tackar igen för din hjälp. Får dessvärre inte rätt på det. Misstänker att ett problem är att jag kopplar kameran till datorn. Kan då inte se vilke enhet den ligger på (e:,f:, g:).

Om jag minns rätt så använder inte Canonkameror USB Mass Storage Class, och monteras därför inte som en extern volym (dvs med ett s.k. drive-letter). Jag tror att man måste använda ett program som pratar PTP (Picture Transfer Protocol) med kameran.
 
Om jag minns rätt så använder inte Canonkameror USB Mass Storage Class, och monteras därför inte som en extern volym (dvs med ett s.k. drive-letter). Jag tror att man måste använda ett program som pratar PTP (Picture Transfer Protocol) med kameran.

Det vore onekligen en förklaring...
Enligt t ex den här tråden på dpreview: http://forums.dpreview.com/forums/readflat.asp?forum=1031&message=25511575&changemode=1 verkar en kortläsare vara svaret på ditt problem, Fredrik.

Johan
 
Ok, då kanske jag slog in lite öppna dörrar där med kommentarerna... :)

Absolut inte. Gillar kommentarer (//) så att man kan följa respektive kommando/programrad!

Vore kul att veta hur det går sen när du testat med en läsare, och om du lyckas få till for-satsen i Windows; scriptet sparar åtminstone mig en hel del manuellt arbete i mitt arbetsflöde.

Johan

Lovat att meddela hur det går. Kan ta några dagar eller så. Inte högsta prioritet, men jag vill ju få det att funka nu när jag börjat fundera på det... ; )

//fredrik
 
Om jag minns rätt så använder inte Canonkameror USB Mass Storage Class, och monteras därför inte som en extern volym (dvs med ett s.k. drive-letter). Jag tror att man måste använda ett program som pratar PTP (Picture Transfer Protocol) med kameran.

Tack för det. Förklarar en del. Har letat febrilt för att hitta beteckningen på den "externa volymen". PTP verkar som ett extra moment jag skippar i nuläget. Blir till att införskaffa en kortläsare (vilket ändå känns ganska smidigt).

//Fredrik
 
Korrigerat skript, använd ej det gamla!!

Jag fann ju att det fanns buggar, de jag funnit är åtgärdade, bland annat kopierades alla filer av samma typ till alla datumfoldrar - inte precis önskvärt. Det nya skapar de foldrar som krävs, tex finns inga RAW filer skapas heller inte foldern. Fler fel kan givetvis finnas, och samma som innan, modifierar du skriptet, dela med dig här... :)

REM This script mimics a linux script already presented on fotosidan.se
REM it is a contribution to those who find it useful. If modified or improved,
REM please share in this thread. Thanks.

REM It simply will copy your photos from card or camera and separates RAW and JPGs
REM It reads file creation date and creates a folder with that name. Then creates subfolders
REM for JPG and RAW files.

REM History
REM -------------------------------------------------------------
REM 2009-01-30 Pontus Edvardsson Created.
REM 2009-01-31 Pontus Edvardsson Corrected a few initial bugs
REM

VERSION= "1.0"

REM Set the name of the folders you want the script to create:
RAWFOLDER="RAW"
JPGFOLDER="JPG"

REM Configure what suffixes your camera uses
RAWSUFFIX="NEF"
JPGSUFFIX="JPG"

REM Configure your Source and Destination directories
SPATH="G:\DCIM\100NCD90"
DPATH="F:\Media\Pictures\album\#osorterat"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(SPATH)
Set colFiles = objFolder.Files


REM ::: Copy files to computer
For Each objFile In colFiles

REM ::: Get file info
file = objFile + " /T:C"
set WshShell = WScript.CreateObject("WScript.Shell")
FILEINFO = WshShell.Exec("%comspec% /c dir " + file).StdOut.ReadAll()

REM ::: Extract filedate
tmp = split(FILEINFO)
filedate = right(tmp(15),len(date))

REM ::: Create folders if they dont already exists
If not objFSO.FolderExists(DPATH + "\" + filedate) Then Set f = objFSO.CreateFolder(DPATH + "\" + filedate)
If not objFSO.FolderExists(DPATH + "\" + filedate + "\" + RAWFOLDER) And right(objFile, len(RAWSUFFIX)) = RAWSUFFIX Then
Set f = objFSO.CreateFolder(DPATH + "\" + filedate + "\" + RAWFOLDER)
end if
If not objFSO.FolderExists(DPATH + "\" + filedate + "\" + JPGFOLDER) And right(objFile, len(JPGSUFFIX)) = JPGSUFFIX Then
Set f = objFSO.CreateFolder(DPATH + "\" + filedate + "\" + JPGFOLDER)
end if

REM ::: Copy files to respective folders
Set objFSO = CreateObject("Scripting.FileSystemObject")
if right(objFile, len(RAWSUFFIX)) = RAWSUFFIX Then objFSO.CopyFile objFile, DPATH + "\" + filedate + "\" + RAWFOLDER + "\", True
if right(objFile, len(JPGSUFFIX)) = JPGSUFFIX Then objFSO.CopyFile objFile, DPATH + "\" + filedate + "\" + JPGFOLDER + "\", True
Next
 
Ny version. Elimierat "flimret"

Ny version där jag funnit ett bättre sätt att läsa fildatum på som innebär att det jobbiga flimret är eliminerat! :) Dessutom en liten dialog som talar om när skriptet kört klart.

REM This script mimics a linux script already presented on fotosidan.se
REM it is a contribution to those who find it useful. If modified or improved,
REM please share in this thread. Thanks.

REM It simply will copy your photos from card or camera and separates RAW and JPGs
REM It reads file creation date and creates a folder with that name. Then creates subfolders
REM for JPG and RAW files.


REM History
REM -------------------------------------------------------------
REM 2009-01-30 Pontus Edvardsson Created.
REM 2009-01-31 Pontus Edvardsson Corrected a few initial bugs
REM 2009-02-01 Pontus Edvardsson Changed the way file information is retrieved,
REM eliminates the annoying flicker.
REM

VERSION= "1.1"

REM Set the name of the folders you want the script to create:
RAWFOLDER="RAW"
JPGFOLDER="JPG"

REM Configure what suffixes your camera uses
RAWSUFFIX="NEF"
JPGSUFFIX="JPG"

REM Configure your Source and Destination directories
SPATH="G:\DCIM\100NCD90"
DPATH="F:\Media\Pictures\album\#osorterat"

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(SPATH)
Set colFiles = objFolder.Files


REM ::: Copy files to computer
For Each objFile In colFiles

REM ::: Get File Creation Date
Set currentfile = objFSO.GetFile(objFile)
fullcreationdate = currentfile.DateCreated
tmp = split(fullcreationdate)
creationdate = tmp(0)

REM ::: Create folders if they dont already exists
If not objFSO.FolderExists(DPATH + "\" + creationdate) Then Set f = objFSO.CreateFolder(DPATH + "\" + creationdate)
If not objFSO.FolderExists(DPATH + "\" + creationdate + "\" + RAWFOLDER) And right(objFile, len(RAWSUFFIX)) = RAWSUFFIX Then
Set f = objFSO.CreateFolder(DPATH + "\" + creationdate + "\" + RAWFOLDER)
end if
If not objFSO.FolderExists(DPATH + "\" + creationdate + "\" + JPGFOLDER) And right(objFile, len(JPGSUFFIX)) = JPGSUFFIX Then
Set f = objFSO.CreateFolder(DPATH + "\" + creationdate + "\" + JPGFOLDER)
end if

REM ::: Copy files to respective folders
Set objFSO = CreateObject("Scripting.FileSystemObject")
if right(objFile, len(RAWSUFFIX)) = RAWSUFFIX Then objFSO.CopyFile objFile, DPATH + "\" + creationdate + "\" + RAWFOLDER + "\", True
if right(objFile, len(JPGSUFFIX)) = JPGSUFFIX Then objFSO.CopyFile objFile, DPATH + "\" + creationdate + "\" + JPGFOLDER + "\", True
Next

Msgbox "File copy is complete.", 64, "PhotoAssist v" + VERSION
Wscript.quit 0
 
Funderade lite på Johans script. Pontus skrev: "...bland annat kopierades alla filer av samma typ till alla datumfoldrar". Men filerna kopieras väl till mappen "import" för att därefter flyttas till mappen ...\"dagens datum"\raw (respektive ...jpg). Och en annan "dagens datum"-mapp nästa dag. Eller har jag missat något?

Om man tömmer kameran fler gånger samma dag så blir det naturligtvis samma "dagens datum"-mapp som används men filerna har ju inte samma namn så...

Schysst jobb med ditt script förresten.
 
Funderade lite på Johans script. Pontus skrev: "...bland annat kopierades alla filer av samma typ till alla datumfoldrar". Men filerna kopieras väl till mappen "import" för att därefter flyttas till mappen ...\"dagens datum"\raw (respektive ...jpg). Och en annan "dagens datum"-mapp nästa dag. Eller har jag missat något?

Om man tömmer kameran fler gånger samma dag så blir det naturligtvis samma "dagens datum"-mapp som används men filerna har ju inte samma namn så...

Schysst jobb med ditt script förresten.

Du har inte missat något. I meningen du citerat kommenterade jag mitt eget skript i föregående version där jag lyckats få med ett fel. Numera borttaget från tråden. Jag mellanlagrar inte innan jag flyttar filerna utan kopierar dem direkt till respektive underkatalog. Dagens datum används inte till något om det inte råkar vara detsamma som fildatum. Det vore ju lätt att lägga till att kunna välja att filerna döps om med unika namn för att undvika kollisioner, det kanske vore praktiskt?
Mvh, Pontus
 
Ok, Kör nämligen ett liknande script som även raderar vissa överflödiga filer. Gäller att ha koll då. Jag använder datum + timme på mapparna. Kan vara bra ifall jag tömmer kameran flera gånger en dag. Kanske lite ot men...
 
ANNONS
Köp en spegellös systemkamera från Canon och få ett 50mm objektiv på köpet hos Götaplatsens Foto.