To make standalone, but what is "require 'api'"?
"task" is long time part of standard library.

See portable "shellcmd" in pacman.

   load'~system/extras/util/pacman.ijs'
   shellcmd_jpacman_ IFUNIX {:: 'dir /w';'ls -a'

You only need to figure out platform-specific
shell commands.

--- Devon McCormick <[EMAIL PROTECTED]> wrote:

> Does anyone have a compact or fairly portable way to rename a file from
> within J?
> 
> I have the following, which is neither though it appears to work. However,
> it uses "winexec" and other Windows-based APIs and jumps through the Windows
> hoop of having to change to the disk and directory before running the rename
> command.  I used this in preference to Oleg's superior "task" library in
> order to make the code as standalone as possible.
> 
> NB.* fileRename: call Windows API to rename file after minimal checking.
> fileRename=: 3 : 0
>    'dirnm oldnm newnm'=. y
>    if. fexist newnm do.
>        0;'Cannot rename "',oldnm,'" to existing name "',newnm,'".'
>    else.
>        dirnm=. dirnm,PATHSEP_j_#~PATHSEP_j_~:{:dirnm
> NB. Get disk specifier if present; otherwise, hope we are already on it.
>        dsknm=. (':' e. dirnm)#' & ',~dirnm{.~>:dirnm i. ':'
>        cmd=. dsknm,'cd "',dirnm,'" & ren "',oldnm,'" "',newnm,'"'
>        tmpfl=. crTmpFl 'bat'
>        cmd 1!:2 <tmpfl
>        wait 1 [ rc=. winexec tmpfl;1
>        rc [ 1!:55 <tmpfl
>    end.
> NB.EG rc=. fileRename 'C:\Temp\';'log01.dat';'log02.dat'
> )
> 
> NB.* fexist: 1 if named file exists, 0 otherwise.
> fexist=: (1:@(1!:4) ::0:@((([:< 8 u:>) ::])&>)@(<^:(L.=0:)))
> 
> NB.* crTmpFl: create new, randomly named file (with optional suffix) in temp
> dir.
> crTmpFl=: 3 : 0
>    suff=. ,>(0=#y){y;'tmp'
>    td=. getTempDir ''
>    while. fexist flnm=. td,suff,~'.',~ALPHA{~?8$#ALPHA do. end.
>    flnm
> NB.EG batfl=. crTmpFl 'bat'
> )
> 
> NB. Where
> require 'api'
> 
> NB.* winexec: Run external command
> winexec=: 'WinExec' win32api NB. Run external command
> 
> getTempPath=: 'GetTempPath' win32api
> 
> NB.* getTempDir: get name of temporary directory assuming it's in
> getTempDir=: 3 : 0
> NB.* getTempDir: get name of temporary directory assuming it's in
> NB. environment variable "TMP".
>    td=. >2{getTempPath 256;256$' '
>    td=. td{.~td i. 0{a.
>    if. 0 do.
>        td=. 2!:5 'TMP'
>    end.
>    td
> )
> 
> 
> 
> -- 
> Devon McCormick, CFA
> ^me^ at acm.
> org is my
> preferred e-mail
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
> 



      
____________________________________________________________________________________
Be a better friend, newshound, and 
know-it-all with Yahoo! Mobile.  Try it now.  
http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ 

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to