Solved

Write to text file with input box to change a specific value

Posted on 2014-07-23
12
814 Views
Last Modified: 2014-07-23
I need to create a batch file and write to it. The wording remain the same but the /Value=? needs to change by provding the person a input box to enter the value? The file needs to be created in c:\Program Files (x86)\test\Worktest\Test.bat



I need to write the following with the ability to change the Value=apple to what ever the user inputs.  I want to be able to change that by using the inputbox.

echo off
"C:\Program Files (x86)\Common Files\test\Interface\Control\hello.jack.test.exe" /Value=apple /playnow

Please advice
0
Comment
Question by:Vicki05
  • 5
  • 4
  • 3
12 Comments
 
LVL 84

Expert Comment

by:oBdA
ID: 40214412
Plain batch:
@echo off
setlocal
set Value=
set /p Value=Please enter the value (or an empty value to exit): 
if "%Value%"=="" goto :eof
"%ProgramFiles(x86)%\Common Files\test\Interface\Control\hello.jack.test.exe" /Value=apple /playnow

Open in new window

0
 
LVL 27

Expert Comment

by:MacroShadow
ID: 40214434
Try this:
echo off
set /p strValue= Please enter a value.
"C:\Program Files (x86)\Common Files\test\Interface\Control\hello.jack.test.exe" /Value=%strValue% /playnow 

Open in new window

0
 
LVL 84

Expert Comment

by:oBdA
ID: 40214451
Small correction for the plain batch (forgot to replace apple, too much copy and paste):
@echo off
setlocal
set Value=
set /p Value=Please enter the value (or an empty value to exit): 
if "%Value%"=="" goto :eof
"%ProgramFiles(x86)%\Common Files\test\Interface\Control\hello.jack.test.exe" /Value="%Value%"/playnow

Open in new window

And for the fun of it, a batch with an input box:
@echo off
setlocal
set Title=Title
set Prompt=Prompt
set TempFile=%Temp%\Input.vbs
>"%TempFile%" echo Wscript.Echo InputBox("%Prompt%", "%Title%")
set Value=
for /f "delims=" %%a in ('cscript.exe //nologo "%Temp%\Input.vbs"') do (set Value=%%a)
del "%TempFile%"
if "%Value%"=="" goto :eof
"%ProgramFiles(x86)%\Common Files\test\Interface\Control\hello.jack.test.exe" /Value="%Value%"/playnow

Open in new window

0
Webinar: Aligning, Automating, Winning

Join Dan Russo, Senior Manager of Operations Intelligence, for an in-depth discussion on how Dealertrack, leading provider of integrated digital solutions for the automotive industry, transformed their DevOps processes to increase collaboration and move with greater velocity.

 

Author Comment

by:Vicki05
ID: 40214517
Sorry, I meant to say that I need a vbscript to write a text or a batch file that will let me change the value.
0
 
LVL 27

Expert Comment

by:MacroShadow
ID: 40214548
Please repost the exact text you need written to a text/batch file, put the variable text only in bold.
0
 

Author Comment

by:Vicki05
ID: 40214595
Here is the vbscript that I am working on. I need to be able to change the value using a inputbox instead of msgbox

strComputer = "."
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")


Const ForReading = 1
Const ForWriting = 2
intAnswer = _
    Msgbox("This utility gives the ability to Update the Value." & vbCrLf & "Do you want to turn Change Value?", _
        vbYesNo, "Run Program")

If intAnswer = vbYes Then

            If objFSO.FileExists("C:\Program Files (x86)\test\Worktest\Test.bat") Then
                  objFSO.DeleteFile "C:\Program Files (x86)\test\Worktest\Test.bat"
            End If


            Set objFSO = CreateObject("Scripting.FileSystemObject")
            Set outFile = objFSO.OpenTextFile("C:\Program Files (x86)\test\Worktest\Test.bat", 8, True)
      For i = 1 to 7

Next

outfile.WriteLine "@echo off"
outfile.WriteLine """C:\Program Files (x86)\Common Files\test\Interface\Control\hello.jack.test.exe""/Value=apple /playnow"


      msgbox"Done"
End If
0
 
LVL 27

Expert Comment

by:MacroShadow
ID: 40214620
Perhaps if I understood your goal I could advise you of a better way...

strValue = InputBox("Enter desired value.")
outfile.WriteLine """C:\Program Files (x86)\Common Files\test\Interface\Control\hello.jack.test.exe""/Value=" & strValue & " /playnow"

Open in new window

0
 
LVL 84

Accepted Solution

by:
oBdA earned 500 total points
ID: 40214652
Do you mean something like this (what's the empty for loop for?):
strOutputFile = "C:\Program Files (x86)\test\Worktest\Test.bat"
strOutputFile = "C:\Temp\Test.bat"
strTitle = "Run Program"
strPrompt =	"This utility gives the ability to update the value." & vbCrLf & _
			"Enter the value you want to set, or an empty value to skip:" & vbCrLf

Const ForReading = 1
Const ForWriting = 2
' Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

strValue = InputBox(strPrompt, strTitle)
If strValue <> "" Then
	If objFSO.FileExists(strOutputFile) Then
		objFSO.DeleteFile strOutputFile
	End If
	Set outFile = objFSO.OpenTextFile(strOutputFile, 8, True)
	For i = 1 to 7
	Next
	outfile.WriteLine "@echo off"
	outfile.WriteLine """C:\Program Files (x86)\Common Files\test\Interface\Control\hello.jack.test.exe"" /Value=""" & strValue & """ /playnow"
	MsgBox "Value changed to '" & strValue & "'."
End If

Open in new window

0
 

Author Comment

by:Vicki05
ID: 40214660
Hi Macro,

I get an error on line2 character 1. Object required "outfile"
0
 

Author Closing Comment

by:Vicki05
ID: 40214681
Thanks for the solution. It worked.
0
 
LVL 84

Expert Comment

by:oBdA
ID: 40214793
Just noted that for the sake of completeness, there should be an "outFile.Close" after line 21. And for the fun of it, here's a version that fixes this and displays the current value in the input box:
strOutputFile = "C:\Program Files (x86)\test\Worktest\Test.bat"
strTitle = "Run Program"
strPrompt =	"This utility gives the ability to update the value." & vbCrLf & _
			"Enter the value you want to set, or an empty value to skip." & vbCrLf

Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
' Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists(strOutputFile) Then
	strSearch = "/Value="
	Set outFile = objFSO.OpenTextFile(strOutputFile, ForReading)
	Do While Not outFile.AtEndOfStream
		strLine = outFile.ReadLine()
		intPosValue = InStr(strLine, strSearch)
		If intPosValue > 0 Then
			intPosPlayNow = InStr(strLine, "/playnow")
			If (intPosPlayNow > 0) And (intPosPlayNow > intPosValue) Then
				strOldValue = Mid(strLine, intPosValue + Len(strSearch) + 1, intPosPlayNow - intPosValue - Len(strSearch) - 3)
			End If
		End If
	Loop
	strPrompt = strPrompt & vbCrLf & "The current value is '" & strOldValue & "'."
	outFile.Close
End If

strValue = InputBox(strPrompt, strTitle, strOldValue)
If (strValue <> "") And (strValue <> strOldValue) Then
	Set outFile = objFSO.OpenTextFile(strOutputFile, ForWriting, True)
	For i = 1 to 7
	Next
	outFile.WriteLine "@echo off"
	outFile.WriteLine """C:\Program Files (x86)\Common Files\test\Interface\Control\hello.jack.test.exe"" /Value=""" & strValue & """ /playnow"
	outFile.Close
	MsgBox "Value changed to '" & strValue & "'."
End If

Open in new window

0
 

Author Comment

by:Vicki05
ID: 40214829
Thanks
0

Featured Post

Space-Age Communications Transitions to DevOps

ViaSat, a global provider of satellite and wireless communications, securely connects businesses, governments, and organizations to the Internet. Learn how ViaSat’s Network Solutions Engineer, drove the transition from a traditional network support to a DevOps-centric model.

Question has a verified solution.

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

Suggested Solutions

A short article about a problem I had getting the GPS LocationListener working.
If you’re thinking to yourself “That description sounds a lot like two people doing the work that one could accomplish,” you’re not alone.
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…

821 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