OK. Would something like this work… $windowsCommand:= "dir “+[Document]File_Name+" /s” SET ENVIRONMENT VARIABLE("_4D_OPTION_CURRENT_DIRECTORY";"C:\\") SET ENVIRONMENT VARIABLE("_4D_OPTION_HIDE_CONSOLE";"true") LAUNCH EXTERNAL PROCESS($windowsCommand;$_t_InputStream;$pathFound)
Am I getting close? Need to start testing in windows John > On May 16, 2017, at 10:58 AM, John Baughman <john...@hawaii.rr.com> wrote: > > I am rethinking what I am trying to achieve. The purpose of this exercise is > to update file paths stored in 4D for thousands of architectural drawings > when the folder containing all these nested drawings is moved to a different > location locally or to a different machine. > > Ultimately the paths stored in 4D are sent to a web site for display in an > end user’s browser. > > So currently the paths only need to be updated in 4D when the drawings folder > is moved or reorganized. > > I am now thinking that maybe I should use LEP to get the current path when 4D > gets the http request for the file, rather than relying on the path stored in > 4D. A single call to LEP is almost instantaneous so this should work fine. > This way I would not have to worry about where the end user puts or organizes > the drawings as long as they are located on a drive that 4D can see. > > Ok, say I go this route, it should work great on the Mac, but what about > windows. Is there a command similar to mdfind in the windows environment? > > John > > > > >> On May 16, 2017, at 10:09 AM, John Baughman <john...@hawaii.rr.com> wrote: >> >> Are you all repeating the LEP in a loop? I am calling SysDoc_Find like this… >> >> vNewFolderPath:=Select folder("Select the the parent folder that contains >> all documents... ";1) >> ALL RECORDS([Document]) >> $size:=Records in selection([Document]) >> For ($i;1;$size) >> GOTO SELECTED RECORD([Document];$i) >> $documentToFind:=[Document]File_Name >> $pathToDocumentFound:=SysDoc_Find ($documentToFind;vNewFolderPath) >> >> End for >> >> Do not know how to do a loop like this in the command line. what does it >> look like? >> >> John >> >>> On May 16, 2017, at 9:45 AM, Lee Hinde via 4D_Tech <4d_tech@lists.4d.com> >>> wrote: >>> >>> I’d second that. I just tried it in the command line on a folder with 5,144 >>> (nested) files and with almost 1,400 results the response was near instant. >>> >>> So, I tried this in 15.4 and Mac 10.12.5. >>> >>> Basically stripping the convert path stuff because I was passing in the >>> full path and those commands messed it up. Also, unquoted the file name. >>> >>> But then point is, it was instant. >>> >>> >>> //Method: SysDoc_Find >>> C_TEXT($searchFor;$1;$searchIn;$2;$pathFound;$0) >>> $searchFor:=$1 >>> $searchIn:=$2 >>> >>> //$searchIn:=Convert path system to POSIX($searchIn) >>> $_txt_OSASCRIPT:="mdfind -onlyin "+$searchIn+" -name "+$searchFor >>> $_t_InputStream:="" >>> $_t_OutputStream:="" >>> LAUNCH EXTERNAL PROCESS($_txt_OSASCRIPT;$_t_InputStream;$pathFound) >>> >>> //If ($pathFound#"") >>> //$pathFound:=Replace string(Convert path POSIX to >>> system($pathFound);"\n";””) >>> >>> // //Note: This is the code I ran for my tests. It is not complete as LEP >>> is actually returning a list of paths to all the documents found with the >>> same name. >>> // //For my test I knew that there would only be one path found so I >>> eliminated anything unnecessary >>> // //My SysDoc_Find method actually converts pathFound to a process array, >>> and returns the first element in the array. The caller can then either use >>> the returned path or the array. >>> // //Also, be aware that $pathFound ends with a \n. So the last element of >>> the array may need to be deleted. My text to array method returns an empty >>> last element. >>> >>> //End if >>> $0:=$pathFound >>> >>>> On May 16, 2017, at 12:32 PM, Jeffrey Kain via 4D_Tech >>>> <4d_tech@lists.4d.com> wrote: >>>> >>>> Which version of 4D are you using? Some versions have a bug in LEP that >>>> causes them to use 100% of the CPU when they are waiting for the result, >>>> thus drastically slowing everything down. >>>> >>>> If you repeat it from the command line instead from inside 4D, what >>>> happens? >>>> >>>> -- >>>> Jeffrey Kain >>>> jeffrey.k...@gmail.com >>>> >>>>> On May 16, 2017, at 3:26 PM, John Baughman via 4D_Tech >>>>> <4d_tech@lists.4d.com> wrote: >>>>> >>>>> Interestingly this is way slower than crawling through the directories. >>>>> Using my SearchFolderContents_Jut method which I posted in my original >>>>> message it takes about 35 seconds to find 526 documents in a folder where >>>>> the documents are at most nested 3 folders deep. Using LEP to search the >>>>> same 526 documents takes almost 3 minutes! >>>> >>>> ********************************************************************** >>>> 4D Internet Users Group (4D iNUG) >>>> FAQ: http://lists.4d.com/faqnug.html >>>> Archive: http://lists.4d.com/archives.html >>>> Options: http://lists.4d.com/mailman/options/4d_tech >>>> Unsub: mailto:4d_tech-unsubscr...@lists.4d.com >>>> ********************************************************************** >>> >>> ********************************************************************** >>> 4D Internet Users Group (4D iNUG) >>> FAQ: http://lists.4d.com/faqnug.html >>> Archive: http://lists.4d.com/archives.html >>> Options: http://lists.4d.com/mailman/options/4d_tech >>> Unsub: mailto:4d_tech-unsubscr...@lists.4d.com >>> ********************************************************************** >> > ********************************************************************** 4D Internet Users Group (4D iNUG) FAQ: http://lists.4d.com/faqnug.html Archive: http://lists.4d.com/archives.html Options: http://lists.4d.com/mailman/options/4d_tech Unsub: mailto:4d_tech-unsubscr...@lists.4d.com **********************************************************************