Call a .bat file from Vb.net

I am calling a .bat file from Vb.net Program. I kept .bat file in my Project folder\ShellScript\fileUpload.bat

I have an issue with System.Diagnostics.Process.Start Syntax. This syntax goes to C:\Windows\System32\ - Folder.

I have to call an .exe ( sfxcl.exe ). This is located in C:\Program Files (x86)\VanDyke Software\Clients

Do System.Diagnostics.Process.Start will not go directly to .exe ?? I can execute the .bat file from any drive. I have run the .bat file from D drive.


           
 Dim sBatchfilePath As String = String.Empty
            sBatchfilePath = AppDomain.CurrentDomain.BaseDirectory
            sBatchfilePath = sBatchfilePath.Replace("\bin\Debug", "\ShellScript")
            sBatchfilePath = sBatchfilePath & "fileUpload.bat"

            System.Diagnostics.Process.Start(sBatchfilePath)

Open in new window

chokkaStudentAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Steve KnightIT ConsultancyCommented:
Can you change the batch file?  If so and you put in at the start

@echo off
pushd "C:\Program Files (x86)\VanDyke Software\Clients"

then the current directory at that point will be the directory you want regardless of how it is called?
0
Fernando SotoRetiredCommented:
When you display the value of the string sBatchfilePath what value is stored in it? It may not be where you think.
0
chokkaStudentAuthor Commented:
At present, I am getting the value in the variable : SbatchFilePath  as C:\Windows\System32\

I have to clean up the .bat file also.

I tried using Pusd syntax, But it doesn't work.
D--Ups.SalesApps.Net-ShellScript-sfxclUp
0
CompTIA Network+

Prepare for the CompTIA Network+ exam by learning how to troubleshoot, configure, and manage both wired and wireless networks.

Fernando SotoRetiredCommented:
But this is not where the bat file is, C:\Windows\System32\, or the copy of the one you wish to run.

From what directory, full path, is the application running from?
0
chokkaStudentAuthor Commented:
I am calling .bat file from my Vb.Net Project. I kept .bat file in the Project folder\ShellScript\ is the sub folder.

sfxcl.exe is located in C:\Program Files (x86)\VanDyke Software\Clients
0
Steve KnightIT ConsultancyCommented:
BTW You can do:

echo %Time% : File transfer script started. >> %LOGFILE%

instead of this:

FOR /f "tokens=1-3 delims=: " %%a in ('Time /T') do SET CurTime=%%a:%%b%%c
echo %CurTime% : File transfer script started. >> %LOGFILE%

Also if you add the path to your executable in here it should do too?

Set SFXCLCMD="C:\Program Files (x86)\VanDyke Software\Clients\SFXCL" %SRC% %SFXCLOPTS% %DST%
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Fernando SotoRetiredCommented:
What is the full path to the project folder where the debug\bin directory is in.
0
chokkaStudentAuthor Commented:
Project Folder : D:\MyProject\bin\Debug

Batch file is in : D:\MyProject\ShellScript
0
chokkaStudentAuthor Commented:
Set SFXCLCMD="C:\Program Files (x86)\VanDyke Software\Clients\SFXCL" %SRC% %SFXCLOPTS% %DST%


Doesnt worked.
0
chokkaStudentAuthor Commented:
Still i am having a tough time on calling .bat file from .Net Code
0
Steve KnightIT ConsultancyCommented:
yes anything changed in bat file is pointless if it isn't running!
0
chokkaStudentAuthor Commented:
How to rewrite the .bat file , which can be executed from any drive in the computer. Let's not get into .Net Program. I just want to invoke .bat file from any drive.
0
Fernando SotoRetiredCommented:
chokka please read the comments I placed in your code.

'' You start out with an empty string in the variable sBatchfilePath
Dim sBatchfilePath As String = String.Empty

'' After executing the next line of code sBatchfilePath should contain "D:\MyProject\bin\Debug\"
sBatchfilePath = AppDomain.CurrentDomain.BaseDirectory

'' After the next line is executed sBatchfilePath should contain "D:\MyProject\bin\Debug\ShellScript\"
sBatchfilePath = sBatchfilePath.Replace("\bin\Debug", "\ShellScript")

'' And finally after the next line sBatchfilePath is executed it should contain "D:\MyProject\bin\Debug\ShellScript\fileUpload.bat"
sBatchfilePath = sBatchfilePath & "fileUpload.bat"

'' So I do not understand why sBatchfilePath is equal to At present, C:\Windows\System32\ as you stated in one of the post 
'' when it should be "D:\MyProject\bin\Debug\ShellScript\fileUpload.bat"
System.Diagnostics.Process.Start(sBatchfilePath)

Open in new window

0
Steve KnightIT ConsultancyCommented:
So is the batch file running but the default path is wrong, or is the batch file not running?

If it is running and you want to see where it is running then type

echo %cd%
pause

at the top of it.

Steve
0
chokkaStudentAuthor Commented:
@Fernando, I am not able to understand too why sBatchfIlePath is mapping to C:\Windows\System32.

I have no idea
0
chokkaStudentAuthor Commented:
Steve, You are right. I have to make sure .bat file is running correctly or not. My understanding is to fix the .bat file and then call it from .Net
0
Fernando SotoRetiredCommented:
Lets try this, change this line of code

System.Diagnostics.Process.Start(sBatchfilePath)

to this for a test.

System.Diagnostics.Process.Start("D:\MyProject\bin\Debug\ShellScript\fileUpload.bat")

Then run the application and see what happens.
0
chokkaStudentAuthor Commented:
@Fernando, one you mentioned in the comment id 40350323 doesnt work.  System cannot find the file path is the Error Message, i get.

This syntax works. Because, File Path is correct.

System.Diagnostics.Process.Start("D:\\Ups.SalesApps.Net\\ShellScript\\fileUpload.bat")
0
chokkaStudentAuthor Commented:
This Syntax works : Set SFXCLCMD="C:\Program Files (x86)\VanDyke Software\Clients\SFXCL" %SRC% %SFXCLOPTS% %DST%
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.