[Gambas-user] Add new command to: Copy directories recursively
Fabien Bodard
gambas.fr at ...626...
Tue Aug 26 10:35:54 CEST 2014
But gambas can't copy from a device to a different one
Le 26 août 2014 09:11, "Julio Sanchez" <jusabejusabe at ...626...> a écrit :
> Caveat:
>
> Yes, that's the idea
>
>
> Regards
>
>
>
> 2014-08-26 8:21 GMT+02:00 Caveat <Gambas at ...1950...>:
>
> > Hello List
> >
> > Although there is always "cp -r", it makes for a very unportable program
> > if you depend on calling external programs. Better to build it in to
> > the language if it's generally and genuinely useful, or to make a
> > callable function in some public repository of Gambas code, so people
> > don't need to reinvent the wheel every time they need a recursive copy.
> >
> > Kind regards,
> > Caveat
> >
> > On 25/08/14 23:04, Tobias Boege wrote:
> > > On Mon, 25 Aug 2014, Julio Sanchez wrote:
> > >> Hi, could you add a new order within gambas3 to copy directories
> > >> recursively.
> > >>
> > >> Something like this:
> > >>
> > >> PUBLIC <http://gambaswiki.org/wiki/lang/public> SUB
> > >> <http://gambaswiki.org/wiki/lang/sub> copia_dir(path_origen AS
> > >> <http://gambaswiki.org/wiki/lang/as> String
> > >> <http://gambaswiki.org/wiki/lang/type/string>, path_destino AS
> > >> <http://gambaswiki.org/wiki/lang/as> String
> > >> <http://gambaswiki.org/wiki/lang/type/string>, OPTIONAL
> > >> <http://gambaswiki.org/wiki/lang/optional> tipo as
> > >> <http://gambaswiki.org/wiki/lang/as> String
> > >> <http://gambaswiki.org/wiki/lang/type/string>)
> > >>
> > >> DIM <http://gambaswiki.org/wiki/lang/dim> arDir AS
> > >> <http://gambaswiki.org/wiki/lang/as> string
> > >> <http://gambaswiki.org/wiki/lang/type/string>[]
> > >> DIM <http://gambaswiki.org/wiki/lang/dim> arFile AS
> > >> <http://gambaswiki.org/wiki/lang/as> string
> > >> <http://gambaswiki.org/wiki/lang/type/string>[]
> > >> DIM <http://gambaswiki.org/wiki/lang/dim> nombredir, nombrefile AS
> > >> <http://gambaswiki.org/wiki/lang/as> String
> > >> <http://gambaswiki.org/wiki/lang/type/string>
> > >>
> > >> IF <http://gambaswiki.org/wiki/lang/if> NOT
> > >> <http://gambaswiki.org/wiki/lang/not> tipo then
> > >> <http://gambaswiki.org/wiki/lang/then> tipo="*"
> > >> IF <http://gambaswiki.org/wiki/lang/if> NOT
> > >> <http://gambaswiki.org/wiki/lang/not> Exist
> > >> <http://gambaswiki.org/wiki/lang/exist>(path_destino) THEN
> > >> <http://gambaswiki.org/wiki/lang/then>
> > >> MKDIR <http://gambaswiki.org/wiki/lang/mkdir> path_destino
> > >> ENDIF <http://gambaswiki.org/wiki/lang/endif>
> > >> arfile = Dir <http://gambaswiki.org/wiki/lang/dir>(path_origen,
> > tipo, gb.
> > >> file <http://gambaswiki.org/wiki/lang/type/file>) 'extraemos los
> > ficheros
> > >> FOR <http://gambaswiki.org/wiki/lang/for> EACH
> > >> <http://gambaswiki.org/wiki/lang/each> nombrefile IN
> > >> <http://gambaswiki.org/wiki/lang/in> arfile 'los copiamos
> > >> COPY <http://gambaswiki.org/wiki/lang/copy> path_origen &/
> > >> nombrefile TO <http://gambaswiki.org/wiki/lang/to> path_destino &/
> > >> nombrefile
> > >> NEXT <http://gambaswiki.org/wiki/lang/next>
> > >> ardir = Dir <http://gambaswiki.org/wiki/lang/dir>(path_origen, "*",
> > gb.
> > >> Directory)
> > >> FOR <http://gambaswiki.org/wiki/lang/for> EACH
> > >> <http://gambaswiki.org/wiki/lang/each> nombredir IN
> > >> <http://gambaswiki.org/wiki/lang/in> arDir 'extraemos los
> > subdirectorios
> > >> copia_dir(path_origen &/ nombredir, path_destino &/
> nombredir)
> > 'usamos
> > >> la recursividad
> > >> NEXT <http://gambaswiki.org/wiki/lang/next>
> > >> END <http://gambaswiki.org/wiki/lang/end>
> > >>
> > > For the other people who can't read the above HTML-like mail, try to
> pipe
> > > it through "sed ':a;$!N;s/\n\?<[^>]*>//;ta;P;D'". There are only a few
> > > places to fix up manually then:
> > >
> > >
> >
> --8<------------------------------------------------------------------------
> > > PUBLIC SUB copia_dir(path_origen AS String, path_destino AS String,
> > OPTIONAL tipo as String)
> > >
> > > DIM arDir AS string[]
> > > DIM arFile AS string[]
> > > DIM nombredir, nombrefile AS String
> > >
> > > IF NOT tipo then tipo="*"
> > > IF NOT Exist(path_destino) THEN
> > > MKDIR path_destino
> > > ENDIF
> > > arfile = Dir (path_origen, tipo, gb.file ) 'extraemos los ficheros
> > > FOR EACH nombrefile IN arfile 'los copiamos
> > > COPY path_origen &/ nombrefile TO path_destino &/ nombrefile
> > > NEXT
> > > ardir = Dir (path_origen, "*", gb.Directory)
> > > FOR EACH nombredir IN arDir 'extraemos los subdirectorios
> > > copia_dir(path_origen &/ nombredir, path_destino &/ nombredir)
> > 'usamos la recursividad
> > > NEXT
> > > END
> > >
> >
> --8<------------------------------------------------------------------------
> > >
> > > I'm not a fan of adding a new instruction for something that can be
> done
> > in
> > > just a few lines once and for all. Here is my version[0], even a little
> > > shorter (plus it can copy single files, too):
> > >
> > >
> >
> --8<------------------------------------------------------------------------
> > > Public Sub CopyDir(sSrc As String, sDst As String)
> > > Dim sRel As String
> > >
> > > If IsDir(sSrc) Then
> > > Mkdir sDst
> > > For Each sRel In Dir(sSrc)
> > > CopyDir(sSrc &/ sRel, sDst &/ sRel)
> > > Next
> > > Else
> > > Copy sSrc To sDst
> > > Endif
> > > End
> > >
> >
> --8<------------------------------------------------------------------------
> > >
> > > And then there is also "cp -r" at your disposal.
> > >
> > > Regards,
> > > Tobi
> > >
> >
> >
> >
> >
> ------------------------------------------------------------------------------
> > Slashdot TV.
> > Video for Nerds. Stuff that matters.
> > http://tv.slashdot.org/
> > _______________________________________________
> > Gambas-user mailing list
> > Gambas-user at lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/gambas-user
> >
>
> ------------------------------------------------------------------------------
> Slashdot TV.
> Video for Nerds. Stuff that matters.
> http://tv.slashdot.org/
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
>
More information about the User
mailing list