Of course, after hitting send...
Look at https://imagej.net/ij/macros/ExecExamples.txt
Enjoy,
Fred
On Sat, March 30, 2024 2:36 pm, Fred Damen wrote:
> Greetings Norbert,
>
> When faced with this type of problem, I preface the command line with echo
> - which should copy the command line that it sees to stdout.
>
> exec('echo touch -t 199911092233 ' + '"'+path+'"');
> Should produce the command line as you would have typed at the unix
> command line.
>
> There are one or more parsers that may be manipulating this string. When
> this finally hits the touch command the arguments are an array of
> character arrays - viz the parameters to the C "main" function. You may
> have to backslash the double quotes \" or even double backslash the double
> quotes \\" in your macro. Every time I face this issue it winds up being a
> different set manipulations to get it to work.
>
> Enojy,
>
> Fred
>
>
> On Sat, March 30, 2024 6:19 am, Norbert Vischer wrote:
>> Hi Fred,
>> both methods work in the unix command line: 1) quotes and 2) backslash
>> before space:
>>
>> 1) touch -t 199911092233 "/private/tmp/AB C.jpg"
>> 2) touch -t 199911092233 /private/tmp/AB\ C.jpg
>>
>>
>> However, I don't succeed to do this from the exec() command.
>>
>> Best regards, Norbert
>>
>>
>> On 30. Mar 2024, at 0:32, Fred Damen <[email protected]> wrote:
>>
>>> Greetings Norbert,
>>>
>>> The exec method is most likely reparsing its parameter as a unix
>>> command
>>> line. Placing double quotes (") around the path should cause this
>>> parsing
>>> to interpret the path as a single token and operate on it as you
>>> expect.
>>>
>>> try...
>>> exec('touch -t 199911092233 ' + '"'+path+'"');
>>> or what ever the proper way to include " in strings...
>>>
>>> Fred
>>>
>>>
>>> On Fri, March 29, 2024 3:01 pm, Norbert Vischer wrote:
>>>> Hello all,
>>>>
>>>> I would like to change an image without loosing its creation date. I
>>>> succeeded to do this as long as the path name has no space. But I
>>>> cannot
>>>> guarantee space-free path names.
>>>>
>>>> The following macro creates an image, saves it, and then sets its date
>>>> to
>>>> year = 1999.
>>>> However, in the second run, it fails because the path contains a
>>>> space.
>>>> Instead, a file called "AB" with zero bytes is created.
>>>> How can I handle path names that contain a space?
>>>> I tried this on MacOS.
>>>>
>>>> Best regards,
>>>> Norbert
>>>>
>>>>
>>>> //===================
>>>> print("\\Clear");
>>>> close("ABC*");
>>>> close("AB C*");
>>>> for(n=1; n<=2; n++){
>>>> if(n==1)
>>>> title = "ABC.jpg";//without space
>>>> if(n==2)
>>>> title = "AB C.jpg";//with space
>>>> print("title=", title);
>>>> newImage(title, "8-bit ramp", 400, 200, 1);
>>>> path = getDir("temp") + title;
>>>>
>>>> saveAs("Jpeg", path);
>>>> date1 = File.dateLastModified(path);
>>>> print("date1=", date1);
>>>>
>>>> exec('touch -t 199911092233 ' + path);
>>>> date2 = File.dateLastModified(path);
>>>> print("date2=", date2);
>>>> }
>>>> selectWindow("Log");
>>>> run("temp"); //show in Finder
>>>>
>>>> //===================
>>>>
>>>> output:
>>>>
>>>> title= ABC.jpg
>>>> date1= Fri Mar 29 20:36:37 CET 2024
>>>> date2= Tue Nov 09 22:33:00 CET 1999
>>>> title= AB C.jpg
>>>> date1= Fri Mar 29 20:36:37 CET 2024
>>>> date2= Fri Mar 29 20:36:37 CET 2024
>>>>
>>>> --
>>>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>>>
>>>
>>> --
>>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>>
>>
>> --
>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html