May 10
The Windows Sysinternals Suite by Mark Russinovich is a great set of tools. I use them all the time, executing them from ColdFusion and parsing the results. Here’s a quick example of using the PsList.exe tool to inspect the processes on your server, or another machine on your network.
<cfexecute
name = "#absolutePath#\PsList.exe"
arguments ="\\#serverName# #processname# -u #accountUsername# -p #accountPassword# -accepteula"
variable ="pResults"
timeout ="5"
/>
<pre>#pResults#</pre>
A few things to keep in mind: 1) you need to use the –accepteula switch the first time you use the command, or it will time out waiting for a response. 2) getting the permissions right to examine remote machines can be tricky. I can’t offer you any advice on that, you’ll just have to beat your head against it until it works. :)
Good Luck!
May 9
So back on March 5th I wrote a post about Using Cold Fusion to Count the Files in a Directory. Recently a component I wrote that keeps an eye on mail server processes choked to death on the large number of files it had to report on. Another component in the mail server failed (one vendor updated their component without telling another vendor about it, yada yada) and the mail queue backed up. With scores of thousands of files in the directory, I found CFDIRECTORY to be kind of slow.
So. I wrote a new function to that uses the FileSystemObject to look at a single directory, and I think it might work better. I pointed it at a photo gallery that had a large number of files and it was very responsive. Here’s hoping, right? Regardless, it’s another way of counting files in a folder; I’m sure I’ll need this again someday, and that’s what this blog is all about, right? Maybe you’ll find it handy, too.
Here’s the idea:
<cffunction name="fileCountFSO" returnType="numeric" output="false">
<cfargument name="folderLoc" required="no">
<cfparam name="folderLoc" default="">
<cflock
timeout ="30"
throwontimeout ="No"
name ="#CreateUUID()#"
type ="EXCLUSIVE"
>
<cftry>
<cfobject
type="COM"
name ="FSO"
class ="Scripting.FileSystemObject"
action ="CONNECT"
/>
<cfcatch>
<cfobject
type="COM"
name="FSO"
class="Scripting.FileSystemObject"
action="CREATE"
/>
</cfcatch>
</cftry>
</cflock>
<cftry>
<cfscript>
objFolderFiles = FSO.getFolder(folderLoc).Files;
objFolderCount = objFolderFiles.Count;
</cfscript>
<cfcatch>
<cfset objFolderCount = 0>
</cfcatch>
</cftry>
<cfreturn #objFolderCount#>
</cffunction>
Recent Comments