Solved

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

Posted on 2009-05-14
2
2,910 Views
Last Modified: 2012-05-07
Hi.

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,
David


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

		'Fso.DeleteFile(foundFile)

	Else

		WScript.echo currentFileName

		'Rensa mac-filer

		'filecount = filecount -1

		'Fso.DeleteFile(foundFile)

	End If

Next

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") = _

        strSMTP

objEmail.Configuration.Fields.Item _

    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25

objEmail.Configuration.Fields.Update
 

If sendMail > 0 Then

	objEmail.Send

End If
 

WScript.Quit 0

Open in new window

0
Comment
Question by:larsan
2 Comments
 
LVL 10

Accepted Solution

by:
Marcjev earned 500 total points
Comment Utility
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)

Marc.
0
 

Author Closing Comment

by:larsan
Comment Utility
Thanks!

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 ...
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Well hello again!  Glad to see you've made it this far without giving up.  In this, the fourth installment of my popular series, I'm going to cover functions and subroutines, what they are, and why they are useful.  Just in case you stumbled onto th…
Over the years I have built up my own little library of code snippets that I refer to when programming or writing a script.  Many of these have come from the web or adaptations from snippets I find on the Web.  Periodically I add to them when I come…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

744 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

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now