Copy file to all subfolders [message #90912] |
Tue, 12 May 2015 06:56  |
Kai Heckel
Messages: 51 Registered: April 2015
|
Member |
|
|
Hey there!
I'd like to copy a file to all contained subfolders.
The structure looks something like this:
MAIN_FOLDER (contains the file that is supposed to be copied)
:
:
- Subfolder1
- Subfolder2
- Subfolder3
I thought about using a FOR-loop but that didn't work out yet.
Would really appreciate your help here!
Thanks
|
|
|
|
|
|
|
|
|
Re: Copy file to all subfolders [message #90923 is a reply to message #90920] |
Wed, 13 May 2015 00:04   |
Kai Heckel
Messages: 51 Registered: April 2015
|
Member |
|
|
Am Dienstag, 12. Mai 2015 16:57:05 UTC+2 schrieb David Fanning:
> Kai Heckel writes:
>
>> Yep I tried the FILE_COPY function but it didn't work...
>> e.g. I tried this line:
>>
>> FILE_COPY, DIALOG_PICKFILE(Title='Select file: '), file_dirs
>>
>> -> file_dirs is a variable that contains all subfolders
>
> Yeah, the documentation is probably leading you astray. I'd use it in a
> loop. Mats will show you how now that he is in the right frame of
> reference. ;-)
>
> Cheers,
>
> David
> --
> David Fanning, Ph.D.
> Fanning Software Consulting, Inc.
> Coyote's Guide to IDL Programming: http://www.idlcoyote.com/
> Sepore ma de ni thue. ("Perhaps thou speakest truth.")
So I tried this:
FOR i=0, N_ELEMENTS(file_dirs)-1 do
spawn, 'cp ', 'myfile', file_dirs[i]
ENDFOR
...somehow this won't work. This maybe an absolute newbie thing but I acutally am new to IDL and programming in general. ;)
|
|
|
Re: Copy file to all subfolders [message #90925 is a reply to message #90923] |
Wed, 13 May 2015 01:22   |
Mats Löfdahl
Messages: 263 Registered: January 2012
|
Senior Member |
|
|
Den onsdag 13 maj 2015 kl. 09:04:18 UTC+2 skrev Kai Heckel:
> Am Dienstag, 12. Mai 2015 16:57:05 UTC+2 schrieb David Fanning:
>> Kai Heckel writes:
>>
>>> Yep I tried the FILE_COPY function but it didn't work...
>>> e.g. I tried this line:
>>>
>>> FILE_COPY, DIALOG_PICKFILE(Title='Select file: '), file_dirs
>>>
>>> -> file_dirs is a variable that contains all subfolders
>>
>> Yeah, the documentation is probably leading you astray. I'd use it in a
>> loop. Mats will show you how now that he is in the right frame of
>> reference. ;-)
>>
>> Cheers,
>>
>> David
>> --
>> David Fanning, Ph.D.
>> Fanning Software Consulting, Inc.
>> Coyote's Guide to IDL Programming: http://www.idlcoyote.com/
>> Sepore ma de ni thue. ("Perhaps thou speakest truth.")
>
> So I tried this:
>
> FOR i=0, N_ELEMENTS(file_dirs)-1 do
> spawn, 'cp ', 'myfile', file_dirs[i]
> ENDFOR
>
> ...somehow this won't work. This maybe an absolute newbie thing but I acutally am new to IDL and programming in general. ;)
The spawn command wants a single string so you should concatenate the parts of the command you want to execute. Also, if myfile is a variable containing the file name, it should not be in quotes.
Doing something like this in the loop makes it easier to see that you get the command string right:
cmd= 'cp ' + myfile + ' ' + file_dirs[i]
print, cmd
spawn,cmd
|
|
|
Re: Copy file to all subfolders [message #90926 is a reply to message #90925] |
Wed, 13 May 2015 02:19   |
Kai Heckel
Messages: 51 Registered: April 2015
|
Member |
|
|
Am Mittwoch, 13. Mai 2015 10:22:12 UTC+2 schrieb Mats Löfdahl:
> Den onsdag 13 maj 2015 kl. 09:04:18 UTC+2 skrev Kai Heckel:
>> Am Dienstag, 12. Mai 2015 16:57:05 UTC+2 schrieb David Fanning:
>>> Kai Heckel writes:
>>>
>>>> Yep I tried the FILE_COPY function but it didn't work...
>>>> e.g. I tried this line:
>>>>
>>>> FILE_COPY, DIALOG_PICKFILE(Title='Select file: '), file_dirs
>>>>
>>>> -> file_dirs is a variable that contains all subfolders
>>>
>>> Yeah, the documentation is probably leading you astray. I'd use it in a
>>> loop. Mats will show you how now that he is in the right frame of
>>> reference. ;-)
>>>
>>> Cheers,
>>>
>>> David
>>> --
>>> David Fanning, Ph.D.
>>> Fanning Software Consulting, Inc.
>>> Coyote's Guide to IDL Programming: http://www.idlcoyote.com/
>>> Sepore ma de ni thue. ("Perhaps thou speakest truth.")
>>
>> So I tried this:
>>
>> FOR i=0, N_ELEMENTS(file_dirs)-1 do
>> spawn, 'cp ', 'myfile', file_dirs[i]
>> ENDFOR
>>
>> ...somehow this won't work. This maybe an absolute newbie thing but I acutally am new to IDL and programming in general. ;)
>
> The spawn command wants a single string so you should concatenate the parts of the command you want to execute. Also, if myfile is a variable containing the file name, it should not be in quotes.
>
> Doing something like this in the loop makes it easier to see that you get the command string right:
>
> cmd= 'cp ' + myfile + ' ' + file_dirs[i]
> print, cmd
> spawn,cmd
Using that and other structures, IDL always prints that "FILE_DIRS with K is out of range.". "file_dirs" includes the full path to every folder that I want the data to be copied to. Still something wrong with the code?
file_dirs = FILE_SEARCH(mydir, /TEST_DIRECTORY)
myfile = DIALOG_PICKFILE(Title='Select myfile: ')
FOR i=0, N_ELEMENTS(file_dirs)-1 do begin
cmd = 'cp ' + myfile + '' + file_dirs[k]
print, cmd
spawn, cmd
ENDFOR
|
|
|
Re: Copy file to all subfolders [message #90927 is a reply to message #90926] |
Wed, 13 May 2015 02:29   |
Mats Löfdahl
Messages: 263 Registered: January 2012
|
Senior Member |
|
|
Den onsdag 13 maj 2015 kl. 11:20:00 UTC+2 skrev Kai Heckel:
> Am Mittwoch, 13. Mai 2015 10:22:12 UTC+2 schrieb Mats Löfdahl:
>> Den onsdag 13 maj 2015 kl. 09:04:18 UTC+2 skrev Kai Heckel:
>>> Am Dienstag, 12. Mai 2015 16:57:05 UTC+2 schrieb David Fanning:
>>>> Kai Heckel writes:
>>>>
>>>> > Yep I tried the FILE_COPY function but it didn't work...
>>>> > e.g. I tried this line:
>>>> >
>>>> > FILE_COPY, DIALOG_PICKFILE(Title='Select file: '), file_dirs
>>>> >
>>>> > -> file_dirs is a variable that contains all subfolders
>>>>
>>>> Yeah, the documentation is probably leading you astray. I'd use it in a
>>>> loop. Mats will show you how now that he is in the right frame of
>>>> reference. ;-)
>>>>
>>>> Cheers,
>>>>
>>>> David
>>>> --
>>>> David Fanning, Ph.D.
>>>> Fanning Software Consulting, Inc.
>>>> Coyote's Guide to IDL Programming: http://www.idlcoyote.com/
>>>> Sepore ma de ni thue. ("Perhaps thou speakest truth.")
>>>
>>> So I tried this:
>>>
>>> FOR i=0, N_ELEMENTS(file_dirs)-1 do
>>> spawn, 'cp ', 'myfile', file_dirs[i]
>>> ENDFOR
>>>
>>> ...somehow this won't work. This maybe an absolute newbie thing but I acutally am new to IDL and programming in general. ;)
>>
>> The spawn command wants a single string so you should concatenate the parts of the command you want to execute. Also, if myfile is a variable containing the file name, it should not be in quotes.
>>
>> Doing something like this in the loop makes it easier to see that you get the command string right:
>>
>> cmd= 'cp ' + myfile + ' ' + file_dirs[i]
>> print, cmd
>> spawn,cmd
>
> Using that and other structures, IDL always prints that "FILE_DIRS with K is out of range.". "file_dirs" includes the full path to every folder that I want the data to be copied to. Still something wrong with the code?
>
> file_dirs = FILE_SEARCH(mydir, /TEST_DIRECTORY)
> myfile = DIALOG_PICKFILE(Title='Select myfile: ')
> FOR i=0, N_ELEMENTS(file_dirs)-1 do begin
> cmd = 'cp ' + myfile + '' + file_dirs[k]
> print, cmd
> spawn, cmd
> ENDFOR
You may want to use the loop variable when indexing file_dirs, rather than the undefined (?) variable k.
|
|
|
Re: Copy file to all subfolders [message #90928 is a reply to message #90927] |
Wed, 13 May 2015 03:30   |
Kai Heckel
Messages: 51 Registered: April 2015
|
Member |
|
|
Am Mittwoch, 13. Mai 2015 11:29:56 UTC+2 schrieb Mats Löfdahl:
> Den onsdag 13 maj 2015 kl. 11:20:00 UTC+2 skrev Kai Heckel:
>> Am Mittwoch, 13. Mai 2015 10:22:12 UTC+2 schrieb Mats Löfdahl:
>>> Den onsdag 13 maj 2015 kl. 09:04:18 UTC+2 skrev Kai Heckel:
>>>> Am Dienstag, 12. Mai 2015 16:57:05 UTC+2 schrieb David Fanning:
>>>> > Kai Heckel writes:
>>>> >
>>>> > > Yep I tried the FILE_COPY function but it didn't work...
>>>> > > e.g. I tried this line:
>>>> > >
>>>> > > FILE_COPY, DIALOG_PICKFILE(Title='Select file: '), file_dirs
>>>> > >
>>>> > > -> file_dirs is a variable that contains all subfolders
>>>> >
>>>> > Yeah, the documentation is probably leading you astray. I'd use it in a
>>>> > loop. Mats will show you how now that he is in the right frame of
>>>> > reference. ;-)
>>>> >
>>>> > Cheers,
>>>> >
>>>> > David
>>>> > --
>>>> > David Fanning, Ph.D.
>>>> > Fanning Software Consulting, Inc.
>>>> > Coyote's Guide to IDL Programming: http://www.idlcoyote.com/
>>>> > Sepore ma de ni thue. ("Perhaps thou speakest truth.")
>>>>
>>>> So I tried this:
>>>>
>>>> FOR i=0, N_ELEMENTS(file_dirs)-1 do
>>>> spawn, 'cp ', 'myfile', file_dirs[i]
>>>> ENDFOR
>>>>
>>>> ...somehow this won't work. This maybe an absolute newbie thing but I acutally am new to IDL and programming in general. ;)
>>>
>>> The spawn command wants a single string so you should concatenate the parts of the command you want to execute. Also, if myfile is a variable containing the file name, it should not be in quotes.
>>>
>>> Doing something like this in the loop makes it easier to see that you get the command string right:
>>>
>>> cmd= 'cp ' + myfile + ' ' + file_dirs[i]
>>> print, cmd
>>> spawn,cmd
>>
>> Using that and other structures, IDL always prints that "FILE_DIRS with K is out of range.". "file_dirs" includes the full path to every folder that I want the data to be copied to. Still something wrong with the code?
>>
>> file_dirs = FILE_SEARCH(mydir, /TEST_DIRECTORY)
>> myfile = DIALOG_PICKFILE(Title='Select myfile: ')
>> FOR i=0, N_ELEMENTS(file_dirs)-1 do begin
>> cmd = 'cp ' + myfile + '' + file_dirs[k]
>> print, cmd
>> spawn, cmd
>> ENDFOR
>
> You may want to use the loop variable when indexing file_dirs, rather than the undefined (?) variable k.
Oh I forgot to change that but if I do, it doesn't change anything...
|
|
|
Re: Copy file to all subfolders [message #90929 is a reply to message #90928] |
Wed, 13 May 2015 03:58  |
Kai Heckel
Messages: 51 Registered: April 2015
|
Member |
|
|
Am Mittwoch, 13. Mai 2015 12:30:59 UTC+2 schrieb Kai Heckel:
> Am Mittwoch, 13. Mai 2015 11:29:56 UTC+2 schrieb Mats Löfdahl:
>> Den onsdag 13 maj 2015 kl. 11:20:00 UTC+2 skrev Kai Heckel:
>>> Am Mittwoch, 13. Mai 2015 10:22:12 UTC+2 schrieb Mats Löfdahl:
>>>> Den onsdag 13 maj 2015 kl. 09:04:18 UTC+2 skrev Kai Heckel:
>>>> > Am Dienstag, 12. Mai 2015 16:57:05 UTC+2 schrieb David Fanning:
>>>> > > Kai Heckel writes:
>>>> > >
>>>> > > > Yep I tried the FILE_COPY function but it didn't work...
>>>> > > > e.g. I tried this line:
>>>> > > >
>>>> > > > FILE_COPY, DIALOG_PICKFILE(Title='Select file: '), file_dirs
>>>> > > >
>>>> > > > -> file_dirs is a variable that contains all subfolders
>>>> > >
>>>> > > Yeah, the documentation is probably leading you astray. I'd use it in a
>>>> > > loop. Mats will show you how now that he is in the right frame of
>>>> > > reference. ;-)
>>>> > >
>>>> > > Cheers,
>>>> > >
>>>> > > David
>>>> > > --
>>>> > > David Fanning, Ph.D.
>>>> > > Fanning Software Consulting, Inc.
>>>> > > Coyote's Guide to IDL Programming: http://www.idlcoyote.com/
>>>> > > Sepore ma de ni thue. ("Perhaps thou speakest truth.")
>>>> >
>>>> > So I tried this:
>>>> >
>>>> > FOR i=0, N_ELEMENTS(file_dirs)-1 do
>>>> > spawn, 'cp ', 'myfile', file_dirs[i]
>>>> > ENDFOR
>>>> >
>>>> > ...somehow this won't work. This maybe an absolute newbie thing but I acutally am new to IDL and programming in general. ;)
>>>>
>>>> The spawn command wants a single string so you should concatenate the parts of the command you want to execute. Also, if myfile is a variable containing the file name, it should not be in quotes.
>>>>
>>>> Doing something like this in the loop makes it easier to see that you get the command string right:
>>>>
>>>> cmd= 'cp ' + myfile + ' ' + file_dirs[i]
>>>> print, cmd
>>>> spawn,cmd
>>>
>>> Using that and other structures, IDL always prints that "FILE_DIRS with K is out of range.". "file_dirs" includes the full path to every folder that I want the data to be copied to. Still something wrong with the code?
>>>
>>> file_dirs = FILE_SEARCH(mydir, /TEST_DIRECTORY)
>>> myfile = DIALOG_PICKFILE(Title='Select myfile: ')
>>> FOR i=0, N_ELEMENTS(file_dirs)-1 do begin
>>> cmd = 'cp ' + myfile + '' + file_dirs[k]
>>> print, cmd
>>> spawn, cmd
>>> ENDFOR
>>
>> You may want to use the loop variable when indexing file_dirs, rather than the undefined (?) variable k.
>
> Oh I forgot to change that but if I do, it doesn't change anything...
Ok everyone, I got it....
That's a stupid one ;)
I executed those lines by marking it and executing it with "Shift + F8". After compiling it it worked out well.
Thanks for your help anyway!
|
|
|