Solved

Vbscript to check if the directory is empty

Posted on 2007-11-18
4
8,001 Views
Last Modified: 2008-05-19
HI, I would just like to ask for a vbscript code to check if the directory is empty.. if it is not empty it will execute a specific program.
0
Comment
Question by:oracle_beginner
  • 2
4 Comments
 
LVL 13

Expert Comment

by:samic400
ID: 20309777
I use all the time in ASP like so:

<%
dim fs,fo,x,i
set fs=Server.CreateObject("Scripting.FileSystemObject")
set fo=fs.GetFolder("<your folder name>")

i = 0

for each x in fo.files
    i = i + 1
next
set fo=nothing
set fs=nothing

if i > 0 then
   'you found a file
end if


%>
0
 
LVL 92

Accepted Solution

by:
Patrick Matthews earned 125 total points
ID: 20309793
Hello oracle_beginner,

You need to check both files AND subfolders.

Dim fso, fld

Set fso = CreateObject("Scripting.FileSystemObject")
Set fld = fso.GetFolder("c:folder\subfolder")

If fld.Files.Count + fld.SubFolders.Count = 0 Then
    MsgBox "Empty"
Else
    MsgBox "Not Empty"
End If

Set fld = Nothing
Set fso = Nothing


Regards,

Patrick
0
 

Author Comment

by:oracle_beginner
ID: 20310911

 how do we execute a dos base application?
0
 
LVL 13

Assisted Solution

by:samic400
samic400 earned 125 total points
ID: 20311053
option Explicit
   
'//public Constants
public Const NORMAL_PRIORITY_CLASS = &H20&
public Const INFINITE = -1&
   
'//public Types
public Type STARTUPINFO
   cb as Long
   lpReserved as string
   lpDesktop as string
   lpTitle as string
   dwX as Long
   dwY as Long
   dwXSize as Long
   dwYSize as Long
   dwXCountChars as Long
   dwYCountChars as Long
   dwFillAttribute as Long
   dwFlags as Long
   wShowWindow as Integer
   cbReserved2 as Integer
   lpReserved2 as Long
   hStdInput as Long
   hStdOutput as Long
   hStdError as Long
End Type
   
public Type PROCESS_INFORMATION
   hProcess as Long
   hThread as Long
   dwProcessID as Long
   dwThreadID as Long
End Type
   
'//API Declarations
public Declare Function WaitForSingleObject Lib "kernel32" (byval _
   hHandle as Long, byval dwMilliseconds as Long) as Long
   
public Declare Function CreateProcessA Lib "kernel32" (byval _
   lpApplicationName as Long, byval lpCommandLine as string, byval _
   lpProcessAttributes as Long, byval lpThreadAttributes as Long, _
   byval bInheritHandles as Long, byval dwCreationFlags as Long, _
   byval lpEnvironment as Long, byval lpCurrentDirectory as Long, _
   lpStartupInfo as STARTUPINFO, lpProcessInformation as _
   PROCESS_INFORMATION) as Long
   
public Declare Function CloseHandle Lib "kernel32" (byval _
   hObject as Long) as Long



   
Put This Code In A Form (Form1):

private Sub Command1_Click()
    Dim AppToRun as string
    Dim ParamForApp as string
    Dim CmdLine as string
       
    '//set Application to Run
    AppToRun = "C:\WINNT\System32\CMD.exe"
       
    '//set Command Line Parameters
    '//The "/C" Tells Windows to Run The Command then Terminate
    '//The Command Line (CMD.exe)
    ParamForApp = " /C MD New_Folder" '//Make new Directory Called 'New_Folder'
       
    '//Build Command string
    CmdLine = AppToRun & ParamForApp
       
    '//Shell App And Wait for It to Finish
    ExecCmd CmdLine
           
End Sub
   
public Sub ExecCmd(CmdLine as string)
    Dim Proc as PROCESS_INFORMATION
    Dim start as STARTUPINFO
    Dim ReturnValue as Integer
       
    '//Initialize The STARTUPINFO Structure
    start.cb = len(start)
       
    '//Start The Shelled Application
    ReturnValue = CreateProcessA(0&, CmdLine, 0&, 0&, 1&, _
       NORMAL_PRIORITY_CLASS, 0&, 0&, start, Proc)
       
    '//Wait for The Shelled Application to Finish
    Do
       ReturnValue = WaitForSingleObject(Proc.hProcess, 0)
       DoEvents
    Loop Until ReturnValue <> 258
       
    '//Close Handle to Shelled Application
    ReturnValue = CloseHandle(Proc.hProcess)
       
End Sub
0

Featured Post

Complete VMware vSphere® ESX(i) & Hyper-V Backup

Capture your entire system, including the host, with patented disk imaging integrated with VMware VADP / Microsoft VSS and RCT. RTOs is as low as 15 seconds with Acronis Active Restore™. You can enjoy unlimited P2V/V2V migrations from any source (even from a different hypervisor)

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Displaying an arrayList in a listView using the default adapter is rarely the best solution. To get full control of your display data, and to be able to refresh it after editing, requires the use of a custom adapter.
Although it can be difficult to imagine, someday your child will have a career of his or her own. He or she will likely start a family, buy a home and start having their own children. So, while being a kid is still extremely important, it’s also …
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question