Solved

Reg: How to use batch script output value  in  vbscript

Posted on 2016-10-19
10
33 Views
Last Modified: 2016-11-08
Hi All,

i have Below Batch script command

@echo off
set VAR=%errorlevel%
D:\SchedTasks\IFRS-Transfer\psftp.exe IFRS@DM3CXJ -pw XXXX -b IFRSTransfer.txt
echo %VAR%
exit /b %ERRORLEVEL%

And i wanted to use VAR value of this batch script in VBscript.

so kindly please tell me how can i use .

Thanks,
Abhishek
0
Comment
Question by:Abhishek kumar
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
  • +2
10 Comments
 
LVL 18

Expert Comment

by:xtermie
ID: 41849602
Use the WScript.Shell object's Environment property.
Example (gets the NUMBER_OF_PROCESSORS variable, this is taken from
Windows Script Host documentation):

Set WshShell = WScript.CreateObject("WScript.Shell") 
Set WshSysEnv = WshShell.Environment("SYSTEM") 
WScript.Echo WshSysEnv("NUMBER_OF_PROCESSORS") 

Open in new window


Refer to
https://msdn.microsoft.com/en-us/library/at5ydy31(v=vs.84).aspx
https://msdn.microsoft.com/en-us/library/6s7w15a0(v=vs.84).aspx
0
 
LVL 70

Expert Comment

by:Qlemo
ID: 41849605
Why? VAR contains the error level at batch start, which is 0. This doesn''t have any "value". The exit code is important, and that is what you automatically get from the Shell.Run method calling the batch file.
0
 
LVL 84

Expert Comment

by:oBdA
ID: 41849611
You're aware that %VAR% contains the errorlevel before the psftp.exe call?
Anyway, assuming you want to call the VBScript from this batch (or are you calling the batch from VBScript? that would be rather cumbersome, because you might just as well run the psftp.exe directly from VBScript), you just pass it as command line argument:
VBS:
VAR = WScript.Arguments(0)
Wscript.Echo "VAR is " & VAR

Open in new window

Batch:
@echo off
set VAR=%errorlevel%
D:\SchedTasks\IFRS-Transfer\psftp.exe IFRS@DM3CXJ -pw XXXX -b IFRSTransfer.txt
echo %VAR%
cscript.exe //nologo "C:\Temp\Whatever.vbs" %VAR%
exit /b %ERRORLEVEL%

Open in new window

1
Why You Need a DevOps Toolchain

IT needs to deliver services with more agility and velocity. IT must roll out application features and innovations faster to keep up with customer demands, which is where a DevOps toolchain steps in. View the infographic to see why you need a DevOps toolchain.

 

Author Comment

by:Abhishek kumar
ID: 41849756
Hi,
Actually i wanted to use the psftp.exe exit code value in vb script for sending the mail whether file transfer is successful or Failed.

Here i am calling Batch script command inside VB Script.

So please help me how can i do this .

Thanks,
Abhishek
0
 
LVL 84

Accepted Solution

by:
oBdA earned 500 total points (awarded by participants)
ID: 41849778
Batch:
@echo off
D:\SchedTasks\IFRS-Transfer\psftp.exe IFRS@DM3CXJ -pw XXXX -b IFRSTransfer.txt
exit /b %ERRORLEVEL%

Open in new window

VBS:
Set objShell = CreateObject("WScript.Shell")
intReturn = objShell.Run(Chr(34) & "D:\Temp\Whatever.cmd" & Chr(34), 0, True)

Open in new window


Or just call psftp.exe directly from VBS:
strFtpProgram = "D:\SchedTasks\IFRS-Transfer\psftp.exe"
strFtpUser = "IFRS@DM3CXJ"
strFtpPassword = "XXXX"
strFtpFile = "IFRSTransfer.txt"

Set objShell = CreateObject("WScript.Shell")
strCommand = Chr(34) & strFtpProgram & Chr(34) & " " & strFtpUser & " -pw " & Chr(34) & strFtpPassword & Chr(34) & " -b " & Chr(34) & strFtpFile & Chr(34)
intReturn = objShell.Run(strCommand, 0, True)

Open in new window

Run Method (Windows Script Host)
https://msdn.microsoft.com/en-us/library/d5fk67ky.aspx
1
 

Author Comment

by:Abhishek kumar
ID: 41849908
Thank you so much :)

its working as expected :)
0
 

Expert Comment

by:Abhishek kumar
ID: 41851460
Hi oBdA,

For below Script

@echo off
pscp.exe -i seom.ppk D:\Informatica\9.6.1\server\infa_shared\TgtFiles\IFRS\Customer\zrrem19cus* seom@sapcir-qa.intranet.z.ca:/infiles
exit /b %ERRORLEVEL%

its not returning the Exitcode value and also the batch command is running for longer time

so kindly please help me how can i use exit code value of this batch script in VBscript.

Thanks,
Abhishek
0
 
LVL 84

Expert Comment

by:oBdA
ID: 41851467
That's not an issue with the batch file itself.
If this batch runs a long time, then it's the pscp.exe command that's taking long; the batch script will just wait until it's done.
Once pscp.exe is done, the errorlevel returned by it will be passed to the calling program just like with psftp.exe (that is, if pscp.exe returns an errorlevel to begin with - not all programs do).
1
 

Expert Comment

by:Abhishek kumar
ID: 41851531
Okay Sir.

Thank you so much :)
0
 
LVL 18

Expert Comment

by:xtermie
ID: 41878454
Solution provided
0

Featured Post

Forrester Webinar: xMatters Delivers 261% ROI

Guest speaker Dean Davison, Forrester Principal Consultant, explains how a Fortune 500 communication company using xMatters found these results: Achieved a 261% ROI, Experienced $753,280 in net present value benefits over 3 years and Reduced MTTR by 91% for tier 1 incidents.

Question has a verified solution.

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

This article is the result of a quest to better understand Task Scheduler 2.0 and all the newer objects available in vbscript in this version over  the limited options we had scripting in Task Scheduler 1.0.  As I started my journey of knowledge I f…
Not long ago I saw a question in the VB Script forum that I thought would not take much time. You can read that question (Question ID  (http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_28455246.html)28455246) Here (http…
Attackers love to prey on accounts that have privileges. Reducing privileged accounts and protecting privileged accounts therefore is paramount. Users, groups, and service accounts need to be protected to help protect the entire Active Directory …

738 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