Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chris Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Problem running a command in VBScript 3

Status
Not open for further replies.

dseaver

IS-IT--Management
Jul 13, 2006
467
I create command string using the following
Code:
Dim LogFileName
LogFileName =  "C:\Logs\RestoreLog-" & Replace(date(), "/", "_") &".txt"
Dim CommandStr
CommandStr = """C:\program files\acronis\trueimageworkstation\trueimagecmd.exe"" /filerestore /filename:""E:\Backup.tib"" >" & LogFileName & " 2>&1"

When I run the resulting string in cmd.exe, it creates the log file, but when its run using

Code:
Set MyObj=CreateObject("WScript.Shell")
MyObj.Run CommandStr

The log file is not generated. any ideas how to fix this?
 
Try...

CommandStr = "%comspec% /c ""C:\program files\acronis\trueimageworkstation\trueimagecmd.exe"" /filerestore /filename:""E:\Backup.tib"" >" & LogFileName & " 2>&1"

--------------------------------------------------------------------------------
dm4ever
My philosophy: K.I.S.S - Keep It Simple Stupid
 
That did it. What does %comspec% do?
 
%comspec% is an environment variable holding the name of your shell, in your case: cmd.exe

Hope This Helps, PH.
FAQ219-2884
FAQ181-2886
 
Ok, now it broke because of the space after C:\Program.... Shouldn't that command work because of the quotes?
 
Fixed it with the following

CommandStr = "%comspec% /c [red]'[/red]C:\program files\acronis\trueimageworkstation\trueimagecmd.exe[red]'[/red] /filerestore /filename:[red]'[/red]E:\Backup.tib[red]'[/red] >" & LogFileName & " 2>&1"
 
I was wrong, That didnt fix it. Any idea why the command doesn't work now that comspec is used?
 
You should echo out the value of CommandStr to see if you are getting the correct syntax...don't worry about seeing %comspec% since this will resolve to the appropriate path when it executes.

Code:
CommandStr = "%comspec% /c " & AddQuotes("C:\program files\acronis\trueimageworkstation\trueimagecmd.exe") & _
			 " /filerestore /filename:E:\Backup.tib > " & LogFileName & " 2 > &1" 
WScript.Echo CommandStr

Function AddQuotes(strText)
	AddQuotes = Chr(34) & strText & Chr(34)
End Function

--------------------------------------------------------------------------------
dm4ever
My philosophy: K.I.S.S - Keep It Simple Stupid
 
Try this. This is what I use in a script I wrote to do unattended client software installs.

Sorry about all the comments but I find them helpfull.

Code:
Dim objFSO
Set objFSO = CreateObject("scripting.filesystemobject")

sExePath = "C:\program files\acronis\trueimageworkstation\trueimagecmd.exe"
sSwitches = "/filerestore /filename:E:\Backup.tib > " & LogFileName & " 2>&1"

If objFSO.FileExists(sExePath) Then
	objShell.Run Chr(34) & sExePath & Chr(34) &_
	" " & Chr(34) & sSwitches& Chr(34), 2, True  
Else 
End If 

'Window options For the objShell.Run command,
'
' objShell.Run(strCommand, [intWindowStyle], [bWaitOnReturn])
'
'[intWindowStyle]
'	(Optional) Integer value indicating the appearance of the program's window. 
'	Note that not all programs make use of this information.

'[bWaitOnReturn]
'	(Optional) Boolean value indicating whether the script should wait for the program to 
'	finish executing before continuing to the next statement in your script. 
'	If set to true, script execution halts until the program finishes, and 
'	Run returns any error code returned by the program. If set to false 
'	(the default), the Run method returns immediately after starting the program, 
'	automatically returning 0 (not to be interpreted as an error code). 
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++	
'0 Hides the window and activates another window.
'1 Activates and displays a window. If the window is minimized or maximized, 
'	the system restores it to its original size and position. 
'	An application should specify this flag when displaying the 
'	window for the first time.
'2 Activates the window and displays it as a minimized window.
'3 Activates the window and displays it as a maximized window.
'4 Displays a window in its most recent size and position. The active window remains active.
'5 Activates the window and displays it in its current size and position.
'6 Minimizes the specified window and activates the next top-level window in the Z order.
'	 The Z order is nothing more than the list detailing the order in which windows 
'	 are to be activated. If you press ALT+TAB, you will see a graphical representation 
'	 of the Z list.
'7 Displays the window as a minimized window. The active window remains active.
'8 Displays the window in its current state. The active window remains active.
'9 Activates and displays the window. If the window is minimized or maximized, 
'	the system restores it to its original size and position. An application 
'	should specify this flag when restoring a minimized window.
'10 Sets the show-state based on the state of the program that started the application.


Thanks

John Fuhrman
Titan Global Services
faq329-6766
 
i was echoing out the value before and it looked the same, but with the command you just gave me does not create the log like before. the commands I had before created the log file, but the restore would not work
 
Sparkbyte, that allowed trueImageCmd to run, but there was no redirection or log file made
 
What if you eliminate that ending stuff??

Code:
sExePath = "C:\program files\acronis\trueimageworkstation\trueimagecmd.exe"
sSwitches = "/filerestore /filename:E:\Backup.tib > " & LogFileName

Thanks

John Fuhrman
Titan Global Services
faq329-6766
 
2>&1 routes the standard error through standard output, that way i log any errors thrown by the program
 
Also, taking that off the end didn't create the log either
 
When I do sparkbyte's suggestion with %comspec% on the front of it, i get the log, but it has the following "'C:\program' is not recognized as an internal or external command,
operable program or batch file.
 
Replace this:
sExePath = "C:\program files\acronis\trueimageworkstation\trueimagecmd.exe"
with this:
sExePath = """C:\program files\acronis\trueimageworkstation\trueimagecmd.exe"""

Hope This Helps, PH.
FAQ219-2884
FAQ181-2886
 
sExePath = """C:\program files\acronis\trueimageworkstation\trueimagecmd.exe"""
sSwitches = "/filerestore /filename:E:\Backup.tib >> " & LogFileName & " 2>&1"

If objFSO.FileExists(sExePath) Then
objShell.Run "%comspec% /k """ & Chr(34) & sExePath & Chr(34) &_
" " & Chr(34) & sSwitches& Chr(34), 2, True


Does not work, this is so frustrating!!!
 
What about this ?
Code:
sExePath = "C:\program files\acronis\trueimageworkstation\trueimagecmd.exe"
sSwitches = "/filerestore /filename:E:\Backup.tib >> """ & LogFileName & """ 2>&1"
If objFSO.FileExists(sExePath) Then
     objShell.Run "%comspec% /k """ & sExePath & _
      """ " & sSwitches, 2, True
...



Hope This Helps, PH.
FAQ219-2884
FAQ181-2886
 
Unfortunately, it doesn't work, the ouput is not redirected at all, the "'C:\program' is not recognized as an internal or external command,
operable program or batch file." appears in the cmd window now. It even broke the rest of the program, kinda.

I also want to thank everyone for their help so far, i feel like we're getting close to solving it
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top