Error on large volume analyse

Started by john.fender, February 08, 2015, 11:28:31 AM

Previous topic - Next topic

john.fender

Hi,

i've a 4 Tb hard drive in USB3, running Windows 8.1 64 and the following command :

>out.csv exiftool -r -csv -ext jpg -all "F:\MEDIAS\Photos"

This contain all my photos, currently 120 647 files, most of them made with my Nikkon D90, but not only.

Launching this command, exiftool 9.69 works and mount all exif files information in a table in memory (approximatively a bit less than 2 Gb) before bugging abruptly, nothing in the console, just the windows crash reporter.

Is there a way to flush the memory table of exiftool after x mb to the output, in order to avoid this issue ? Maybe a particular command line ?

Thanks,

John.

Phil Harvey

Hi John,

The command should be:

exiftool -r -csv -ext jpg -all "F:\MEDIAS\Photos" > out.csv

(with the "> out.csv" at the end)

But I don't recommend using the -csv option for a large number of files like this.  If possible, use -json or some other format instead.  Read the application documentation for details about why.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

john.fender

#2
Hi Phil,

thanks for your answer ! :)

1. It's definitively better to use the >file.txt at the begining in batch and at the end, it's not making any difference for the performance of your program. With the >file.txt at the begining, you can't in batch hav issue such echo %test%>file.csv where %test% equal something with a number at the end. At this point of time cmd interpret x> as an output redirector whereras it's impossible with the >file.csv at the beginning.

2. JSON export data in the file instead of filling it in memory (notice that i have no issue with the computer memory, i've more than 8 Gb free !). But the format is not usable with Excel or any csv software !

Additinnal query, any way to get ride of the day saving light number at the end of file modify date (2006:02:07 20:29:34+01:00) ? I would just get the date like the 3 others date exif fields ? This make the thing hardest for date comparison !

Edit : i've also discover that i need to put --overwrite_original in the command line to avoid an jpg_original extension, it's surprising.

Cheers.


Phil Harvey

That's -overwrite_original, not --overwrite_original.

You can use the -d option to reformat the date/time values to remove the timezone.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).

john.fender

Re,

i've read the help related to -d option

i've : File Modification Date/Time     : 2015:01:27 11:02:36+01:00

what i want is : File Modification Date/Time     : 2015:01:27 12:02:36

Using the -d option like that, i don't get the expected result :

Quoteexiftool -d %Y:%m:%d %H:%M%:S "-filemodifydate<filemodifydate" File.jpg

How should i do ?

Phil Harvey

I thought you wanted to get rid of the time zone.  If you want to also adjust the time it get more complicated.

You can do this with a user-defined Composite tag and this config file:

%Image::ExifTool::UserDefined = (
    'Image::ExifTool::Composite' => {
        MyDate => {
            Require => 'FileModifyDate',
            ValueConv => q{
                $val =~ s/([-+].*)//;
                require 'Image/ExifTool/Shift.pl';
                Image::ExifTool::ShiftTime($val, $1);
                return $val;
            },
        },
    },
);


Then use MyDate instead of FileModifyDate to get the modified date/time.  See the sample config file for more information about user-defined tags.

- Phil
...where DIR is the name of a directory/folder containing the images.  On Mac/Linux/PowerShell, use single quotes (') instead of double quotes (") around arguments containing a dollar sign ($).