Go Premium for a chance to win a PS4. Enter to Win

  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 3033
  • Last Modified:

Can I use VB:s string.StartsWith in WScript? How?


I have a script that I use to check folders for files using scheduled tasks.
If it finds files, it moves them to a sub folder and then alerts a user with an email.

I now have a few macs that access this file system and thus I have a lot of files starting with a "."

I'd like this script to automatically remove them.

As a java programmer, the logical choice was to search for a starts with function.
I found one in VB script, but I can not seem to get it to work.

Code below. The currentFileName echoes correctly, but when I try to use:
currentFileName.StartsWith(".") - I get a 800A01A8 error "object required".

Code below. (Commented out the actual moving and deleting of files + emailing for testing)

Many thanks in advance, and best regards,

Option Explicit
Dim Fso, args, num, folderPath, utrPath, strEmailFrom, strEmailTo, strEmailSubject, strSMTP, sendMail, strFilesInBody, currentFileName, myFolder, filecount, colFiles, foundFile
Set Fso = CreateObject("Scripting.FileSystemObject") 
Set args = WScript.Arguments
num = args.Count
if num < 3 then
   WScript.Echo "Du glömde ange parameter för mapp att kolla och/eller mottagarens mejladress och/eller meddelande." & vbCrLf & "Används: scriptnamn.vbs C:\Temp kalle@gp.se Meddelande" & vbCrLf & "Eventuella extra e-postadresser, lägg till ; mellan." & vbCrLf & "Ex: kalle@gp.se;nisse@gp.se"
   WScript.Quit 1
end if
folderPath = args.Item(0)
utrPath = folderPath & "\utredning\"
strEmailFrom = "automailer@gp.se"
strEmailTo = args.Item(1)
strEmailSubject = "*** LARM *** " & args.Item(2)
strSMTP = "mailhost.gp.se"
sendMail = 0
strFilesInBody = ""
currentFileName = ""
Set myFolder = Fso.GetFolder(folderPath)
filecount = myFolder.Files.Count
Set colFiles = myFolder.Files
For Each foundFile In colFiles
	Set currentFileName = Fso.GetFileName(foundFile)
	If currentFileName.StartsWith(".") Then
		WScript.echo "yes"
	End If
    If Len(Fso.GetExtensionName(foundFile)) <= 3 Then
		WScript.echo currentFileName
		'strFilesInBody = strFilesInBody +  currentFileName & vbCrLf
		'sendMail = 1
		'Fso.CopyFile foundFile, utrPath, true
		WScript.echo currentFileName
		'Rensa mac-filer
		'filecount = filecount -1
	End If
strEmailBody = "Nu ligger det " & filecount & " filer i " & utrPath & vbCrLf & vbCrLf & strFilesInBody
Set objEmail = CreateObject("CDO.Message")
objEmail.From = strEmailFrom
objEmail.To = strEmailTo
objEmail.Subject = strEmailSubject
objEmail.Textbody = strEmailBody
objEmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
objEmail.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
If sendMail > 0 Then
End If
WScript.Quit 0

Open in new window

1 Solution
Remark: The GetFileName method returns a string and no object. Hence it has no methods in vbscript
You should write something like:
var currentFileName, firstchar
currentFileName = Fso.GetFileName(foundFile)
firstchar = left(currentfilename,1)

Or use some other string functions (search for vbscript string functions on the web)

larsanAuthor Commented:

In java-lingo a string is an object so I assumed that it was so in vb.

The code below works nicely:

currentFileName = Fso.GetFileName(foundFile)
firstChar = Left(currentFileName,1)
If StrComp(firstChar,".",1) = 0 Then ...

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now