Pass a VB Script variable to a batch file

To start off I really know very little about VB.  I compiled this code from Google searches, but I am now stuck.  I want to run a VB program that looks at a specific folder and counts the files within that folder.  If the file count is <50 I want the program to call a batch file and send the “File Count” as a variable.  I got everything to work, but the variable send.  The batch file just runs blat to email me the File Count.   I want to pass the vriable IntCount to the batch file.  When I run the script I get an error "The system can not find the specified file".  If I remove
" & IntCount,1" the program run fine (but I dont get the variable passed).

The code is:

' VBScript
Option Explicit

Dim fs ' variable declared outside a procedure (this is a global variable)
       ' this is hold a reference to the file system object

' create an instance
Set fs = CreateObject("scripting.filesystemobject")

' count files in windows directory
CountFiles ("\\TestServer\TOTIFF")

' takes a string argument containing the name of the directory
' returns an integer contiang the nubmer of files in that direcrectory
' and all sub directories
Function CountFiles (ByVal StrFolder)
    Dim ParentFld
    Dim SubFld
    Dim IntCount
      DIM Var1
      Var1 = "Hello"

        ' note the use of the fs global variable
    Set ParentFld = fs.GetFolder (StrFolder)
   
        ' count the number of files in the current directory
    IntCount = ParentFld.Files.Count
   
    For Each SubFld In ParentFld.SubFolders
        ' count all files in each subfolder - recursion point
        IntCount = IntCount + CountFiles(SubFld.Path)
    Next

    ' return counted files
    CountFiles = IntCount

If IntCount < 50 Then
   MsgBox IntCount

   Dim objShell
   Set objShell = CreateObject("WScript.Shell")
   objShell.Run "C:\FileCount\filecount.bat" & IntCount,1
   Set objshell = Nothing  
Else    
End If

End Function
cwc70Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Bill PrewConnect With a Mentor Commented:
You shouldn't need the COMSPEC stuff, that isn't needed so let's take that out and go with:

   objShell.Run "C:\FileCount\filecount.bat " & IntCount,1

~bp
0
 
Bill PrewCommented:
You need a space after the BAT file name, before the parm, as in :

   objShell.Run "C:\FileCount\filecount.bat " & IntCount,1

~bp
0
 
jawa29Commented:
Hi

Do you need a space at the end of the file name?

I suspect that you are getting this output
C:\FileCount\filecount.bat123

Instead of
C:\FileCount\filecount.bat 123

Jawa29
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
cwc70Author Commented:
I copied your text into the program and I received the same error.
0
 
Bill PrewCommented:
Try this:

   objShell.Run "%COMSPEC% /C C:\FileCount\filecount.bat " & IntCount,1

~bo
0
 
Bill PrewCommented:
I did a simple test here without the comspec, but with the space, and it worked fine.  Are you sure you put the space in?  

What does your BAT file look like, I suspect there is logic in it that is doing something different when a parm is passed and trying to execute a program or command that is then generating the error.

~bp
0
 
jawa29Commented:
Copied your entire script and set a batch file up with a simple echo statement and it all worked.
0
 
cwc70Author Commented:
The VB program now runs with out errors.  The batch file screen opens and closes quickly and it does not email.  If I run the Batch by itself it works fine.

Here is the batch:

@echo off

set program_blat=C:\InowFileCount\blat

cd %program_blat%
blat.exe -f admin@ummc.org -To chad@ummc.org -subject "Sentry FTP" -server mail1.ummc.org:25 -body "test"
0
 
Bill PrewCommented:
Add a line like this to the end of the BAT file and test it from the VBS script again.  This way it will keep the window open until you press a key and you can look for any errors.

PAUSE

~bp
0
 
cwc70Author Commented:
It's is not even calling the batch file.  I made a new batch file and tested it.

@Echo hello
pause

I pointed the script to call this new BAT file and the script runs I still see that cmd window open and close really quick and that is it.  The window I see must not be the BAT window.  
0
 
Bill PrewCommented:
Is this the line you now are using?

   objShell.Run "C:\FileCount\filecount.bat " & IntCount,1

~bp
0
 
cwc70Author Commented:
THis is it:
objShell.Run "%COMSPEC% /C C:\FileCount\hello.bat " & IntCount,1
0
 
cwc70Author Commented:
Things are good - It worked perfectly.  Thanks for your help.
0
 
cwc70Author Commented:
THanks
0
 
Bill PrewCommented:
Welcome, glad we sorted that out.

~bp
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.