Sorry - here it is:
NB.* jd: return just directories, not files, from "dir" list
jd=: 3 : '(''d''e.&>4{"1 y.)#0{"1 y.'


On 8/1/07, Tom Arneson <[EMAIL PROTECTED]> wrote:
>
> Devon,
>
> Thanks, but I find one more item missing:
>
> jd is also undefined in dirlist1
>
> Tom Arneson
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Devon McCormick
> Sent: Wednesday, August 01, 2007 14:05
> To: Programming forum
> Subject: Re: [Jprogramming] copy directory tree
>
> I believe it's in the code I already sent, but here it is again:
>
> NB.* dirExists: 0: dir does not exist; 1: exists
> dirExists=: 3 : '0&~:#@:dirlist1 (-PATHSEP_j_={:y.)}.y.=. ,y.'
>
> Oh, I see, it calls something else I did NOT send:
>
> dirlist1=: 3 : 0
> NB.* dirlist1: list only directories at given path.
>    y.=. y.,(PATHSEP_j_={:y.)#'*.*'      NB. Add wildcards if last char is
> path sep'r.
>    if. 0~:#dl=. 1!:0 y. do. jd dl
>    else. dl end.
> )
>
> Hopefully that's all, folks.
>
> On 8/1/07, Tom Arneson <[EMAIL PROTECTED]> wrote:
> >
> > Devon,
> >
> > Would you please send the definition of dirExists
> >
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On Behalf Of Devon McCormick
> > Sent: Wednesday, August 01, 2007 07:15
> > To: Programming forum
> > Subject: Re: [Jprogramming] copy directory tree
> >
> > I haven't looked at this in a while, but I believe it works.
> >
> >
> > copyDir=: 4 : 0
> > NB.* copyDir: copy directory x. and all its contents to directory y.
> >    fromdir=. endSlash x. [ todir=. endSlash y.
> >    assert. dirExists fromdir
> >    if. -.dirExists todir do. createdir todir end.
> >    assert. dirExists todir
> >    fls=. dir fromdir,'*'
> >    subdirs=. 0{"1 (whd=. 'd' e.&>4{"1 fls)#fls
> >    fls=. 0{"1 (-.whd)#fls
> >    sf=. 0 0 NB. Count successes and failures.
> >    for_fl. fls do. fl=. >fl
> >        if. fexist todir,fl do. ferase todir,fl end. NB. Overwrite
> existing
> >        ct=. 1 0 NB. Assume 1 success, 0 failures...
> >        try. (fromdir,fl) fcopy todir,fl catch. ct=. 0 1 end.
> >        sf=. sf+ct
> >    end.
> >    for_sbdr. subdirs do. sbdr=. >sbdr
> >        if. -.dirExists sbdr do. createdir sbdr end.
> >        ct=. 1 0 NB. Assume 1 success, 0 failures...
> >        try. ssf=. (fromdir,sbdr) copyDir todir,sbdr catch. ct=. 0 1 end.
> >        sf=. sf+ssf+ct
> >    end.
> > )
> >
> > NB.* fcopy: copy file x. to y. using WIN32 API call.
> > fcopy=: 'CopyFileA' win32apir @: (; ;&1)
> > NB.EG 'c:\temp\src.xls' fcopy 'c:\temp\dest.xls' NB. Returns 1 iff
> > successful
> >
> > endSlash=: 3 : 0
> > NB.* endSlash: ensure terminal path separator char, e.g. for directory.
> >    y.,PATHSEP_j_#~PATHSEP_j_~:{:y.
> > NB.EG -:/endSlash &.>'C:\ADir\';'C:\ADir'
> > NB. 1
> > )
> >
> > NB.* dirExists: 0: dir does not exist; 1: exists
> > dirExists=: 3 : '0&~:#@:dirlist1 (-PATHSEP_j_={:y.)}.y.=. ,y.'
> >
> > NB.* createdir: Create directory
> > createdir=: 3 : 'try. 1!:5 <y. catch. 0 end.'
> >
> > NB.* createDirPath: create (all elements of) directory path.
> > createDirPath=: 3 : 0
> >    ps=. PATHSEP_j_
> >    dn=. y.
> > NB. Break path into pieces, e.g. 'C:\tmp\foo'->'C:';'\tmp';'\foo'
> >    pdn=. <;.1 (ps#~ps~:{.dn),(-ps={:dn)}.dn
> >    if. ':' e. dn do. NB. Remove '\' before drive letter
> >        pdn=. (<dn{.~>:dn i. ':') 0}pdn
> > NB. Combine drive letter w/1st path element, e.g.
> > '\C:';'\tmp';'\foo'->'C:\tmp';'\foo'
> >        pdn=. ((<ps-.~>0{pdn),&.>1{pdn) 0}}.pdn
> >    end.
> > NB. Successive directories to create, e.g.
> > 'C:\tmp';'C:\tmp\foo';'C:\tmp\foo\bar'
> >    d2c=. <"1 pdn#~-.dirExists"1 pdn=. ;\pdn
> >    rc=. 1 NB. Success too if they're already all there
> >    if. 0<#d2c do. rc=. createdir&>d2c end.
> >    rc
> > )
> >
> >
> >
> > On 7/31/07, Sherlock, Ric <[EMAIL PROTECTED]> wrote:
> > >
> > > Options for copying a directory tree:
> > > 0. write a verb using fcopynew verb from files.ijs and verbs from
> > > dir.ijs to copy each file in the tree
> > > 1. do the same but use winapi functions.
> > > 2. call xcopy
> > >
> > >
> > > I haven't found anything in my forum/wiki search that covers this
> issue.
> > > Has anybody already tackled this and is happy to share advice/code?
> > >
> > > More on my desired usage:
> > > I have a set of directory trees.
> > > Each tree contains files and directories that together define a
> > > configuration for a simulation program.
> > >
> > > Under programmatic control, I want to copy a chosen template to a
> > > sub-directory of the users directory.
> > >
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > >
> >
> >
> >
> > --
> > Devon McCormick, CFA
> > ^me^ at acm.
> > org is my
> > preferred e-mail
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
>
>
>
> --
> Devon McCormick, CFA
> ^me^ at acm.
> org is my
> preferred e-mail
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
>
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>



-- 
Devon McCormick, CFA
^me^ at acm.
org is my
preferred e-mail
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to