Google Answers Logo
View Question
 
Q: Ultra-simple Windows Scripting VBS script needed ( No Answer,   5 Comments )
Question  
Subject: Ultra-simple Windows Scripting VBS script needed
Category: Computers > Programming
Asked by: donphiltrodt-ga
List Price: $35.00
Posted: 09 Dec 2005 23:12 PST
Expires: 08 Jan 2006 23:12 PST
Question ID: 603967
I need a very simple Windows Scripting script written.

I found a command line tool (mp3splt) that will make an excellent
Shell Extension, provided I can do one thing: edit the pathname
argument it receives from Windows via the "%1" variable.

A vbs script can act as a liason between a) the shell extension
command issued by Windows and b) the command line arguments/switches
that mp3splt wants.


___Synopsis___

Script receives a pathname as a Windows-ShellEx-intiated command line
argument via %1.

Script strips pathname down to the raw filename (sans driveletter, parent dirs).  

Script presents filename to user for confirmation or editing, via a
prepopulated Msgbox.

Script executes the mp3splt command, sending the stripped and
user-confirmed  (and possibly modified) filename as a commandline
argument.

___Detailed version___

The script (called Prompt.vbs) will be run from right-click in Windows
Explorer via a Shell Extension registry entry.  (I will create this
registry entry.  But I'll gladly accept pointers or resources.  :-) 
The script will be called with this command...

prompt.vbs %1

...where %1 is the full path name of the file I selected before
right-clicking and choosing the shell extension.

The script's job is very simple...

--) Present a msgbox _prepopulated_ with the FILEname that was passed
to the vbs script via the %1 argument.  CRITICAL: Msgbox is
prepopulated with the FILEname, NOT the "path", which includes the
drive letter and parent directories.

Msgbox options should be OK and Cancel.

--) Validate the Msgbox input by replacing all filename-invalid
characters (/\.*? etc) with underscores.  (Get a complete list from MS
knowledge base.)

--) Execute the following command...

foobaz.exe -h higgle -i shiggle -o "@n-<<msgbox>>"

...where <<msgbox>> is replaced by the validated input from the message box.
Answer  
There is no answer at this time.

Comments  
Subject: Re: Ultra-simple Windows Scripting VBS script needed
From: ljbuesch-ga on 10 Dec 2005 00:51 PST
 
I can do this if you don't care if it's an actual application and not a script.

I have .net and it'll be a .net application, so instead of doing
prompt.vbs %i, you can do prompt.exe %i (unless you know how to create
vbs's in .net).

Let me know: Agolna@gmail.com
Subject: Re: Ultra-simple Windows Scripting VBS script needed
From: donphiltrodt-ga on 10 Dec 2005 01:17 PST
 
It needs to be a script.  Thank you, though.
Subject: Re: Ultra-simple Windows Scripting VBS script needed
From: b_cummins-ga on 10 Dec 2005 08:52 PST
 
Try this:

'###############################################################################
'# Author: Ben Cummins 
'#  Date: 10 December 2005 16:54
'# 
'# Script to parse command line parameter, validate filename and pass 
'#	off to third party application.
'###############################################################################

'# Make sure here is exactly one argument.
If WScript.Arguments.Count <> 1 Then
	MsgBox "Invalid Parameters" & vbCrlF & "Please use test.vbs <filename>"
Else
	
	'# temporary variables
	Dim filename, newfilename, strFileName, strFilePath, indexOfLastSlash
	
	'# Get filename from the command line
	filename = WScript.Arguments.Item(0)

	'# find the last \ in the filename
	indexOfLastSlash = InstrRev(filename, "\")

	'# get the path of the file
	strFilePath = Mid(filename, 1, indexOfLastSlash)
	'# get the filename of the file
	strFileName = Mid(filename, indexOfLastSlash+1)


	'# get new filename from the user
	newfilename = InputBox("Please enter new filename", "Input Required", strFileName)

	'# make sure the user has entered something
	If newfilename <> "" Then
		'# validate the filename
		If ValidateFilename(newfilename) Then
			'# execute  the command
'			RunCommand "foobaz.exe -h higgle -i shiggle -o ""@n-" & newfilename & """"
			RunCommand "notepad """ & newfilename & """"
		End If
	Else
		'# User entered no details.
		MsgBox "No input specified."
	End If
End If

'# Run a command line application
Function RunCommand(strCommand)
	Set objShell = CreateObject("WScript.Shell")
	Set objScriptExec = objShell.Exec(strCommand)
	Set objShell = Nothing
	Set objScriptExec = Nothing
End Function

'# based on characters from http://support.microsoft.com/kb/q177506/
Function ValidateFilename(strFilename)
	Dim strValidChars
	'# Enter all valid characters here. The current list was taken from the above url.
	strValidChars = "^&'@{}[],$=!-#()%.+~_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
	Dim strInvalid
	Dim i,char
	For i = 1 To Len(strFilename)
		char = UCase(Mid(strFilename, i, 1))
		If InStr(strValidChars, char) = 0 Then
			strInvalid = strInvalid & ", " & char
		End If
	Next

	If strInvalid <> "" Then
		MsgBox "The following characters were invalid in your filename:" &
vbCrlf & vbCrLf & strInvalid
		ValidateFilename = False
	Else
		ValidateFilename = True
	End If
	
End Function
Subject: Re: Ultra-simple Windows Scripting VBS script needed
From: b_cummins-ga on 10 Dec 2005 08:53 PST
 
Sorry, forgot to uncomment the RunCommand line, pelase see ameneded version below

'###############################################################################
'# Author: Ben Cummins 
'#  Date: 10 December 2005 16:54
'# 
'# Script to parse command line parameter, validate filename and pass 
'#	off to third party application.
'###############################################################################

'# Make sure here is exactly one argument.
If WScript.Arguments.Count <> 1 Then
	MsgBox "Invalid Parameters" & vbCrlF & "Please use test.vbs <filename>"
Else
	
	'# temporary variables
	Dim filename, newfilename, strFileName, strFilePath, indexOfLastSlash
	
	'# Get filename from the command line
	filename = WScript.Arguments.Item(0)

	'# find the last \ in the filename
	indexOfLastSlash = InstrRev(filename, "\")

	'# get the path of the file
	strFilePath = Mid(filename, 1, indexOfLastSlash)
	'# get the filename of the file
	strFileName = Mid(filename, indexOfLastSlash+1)


	'# get new filename from the user
	newfilename = InputBox("Please enter new filename", "Input Required", strFileName)

	'# make sure the user has entered something
	If newfilename <> "" Then
		'# validate the filename
		If ValidateFilename(newfilename) Then
			'# execute  the command
			RunCommand "foobaz.exe -h higgle -i shiggle -o ""@n-" & newfilename & """"
		End If
	Else
		'# User entered no details.
		MsgBox "No input specified."
	End If
End If

'# Run a command line application
Function RunCommand(strCommand)
	Set objShell = CreateObject("WScript.Shell")
	Set objScriptExec = objShell.Exec(strCommand)
	Set objShell = Nothing
	Set objScriptExec = Nothing
End Function

'# based on characters from http://support.microsoft.com/kb/q177506/
Function ValidateFilename(strFilename)
	Dim strValidChars
	'# Enter all valid characters here. The current list was taken from the above url.
	strValidChars = "^&'@{}[],$=!-#()%.+~_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
	Dim strInvalid
	Dim i,char
	For i = 1 To Len(strFilename)
		char = UCase(Mid(strFilename, i, 1))
		If InStr(strValidChars, char) = 0 Then
			strInvalid = strInvalid & ", " & char
		End If
	Next

	If strInvalid <> "" Then
		MsgBox "The following characters were invalid in your filename:" &
vbCrlf & vbCrLf & strInvalid
		ValidateFilename = False
	Else
		ValidateFilename = True
	End If
	
End Function
Subject: Re: Ultra-simple Windows Scripting VBS script needed
From: donphiltrodt-ga on 14 Dec 2005 22:23 PST
 
Many thanks.  Works great!  Tried to find a contact for you on the
web.  No luck.  You've removed a multi-year headache!

Important Disclaimer: Answers and comments provided on Google Answers are general information, and are not intended to substitute for informed professional medical, psychiatric, psychological, tax, legal, investment, accounting, or other professional advice. Google does not endorse, and expressly disclaims liability for any product, manufacturer, distributor, service or service provider mentioned or any opinion expressed in answers or comments. Please read carefully the Google Answers Terms of Service.

If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you.
Search Google Answers for
Google Answers  


Google Home - Answers FAQ - Terms of Service - Privacy Policy