Solved

pass argument to batch file with space in the argument

Posted on 2011-09-21
7
723 Views
Last Modified: 2012-05-12
I have a console application written in C# that starts a process and I need to pass an argument to it that has a space in the name. This example shows how I can have the batch file start an application that I set as the parameter. I used it to launch notepad, but if I put a space between note and pad it no longer works.

                try
                {
                    string targetDir;
                    targetDir =
                      string.Format(@"W:\");
                    p = new Process();
                    p.StartInfo.WorkingDirectory = targetDir;
                    p.StartInfo.FileName = "test.bat";

                    p.StartInfo.Arguments =
                      string.Format("note pad");
                    p.StartInfo.CreateNoWindow = false;
                    p.Start();
                    p.WaitForExit();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Exception Occurred :{0},{1}",
                                ex.Message, ex.StackTrace.ToString());
                }

Open in new window


How can I pass that argument with the space in it?
0
Comment
Question by:wiggy353
  • 4
  • 3
7 Comments
 
LVL 43

Expert Comment

by:Steve Knight
ID: 36576547
You need double quotes around the argument on the command line.  As to how to escape the " characters in C#,not my language.  
May involve referring to it as character 34, doubling up "" or using \" etc.
0
 
LVL 43

Expert Comment

by:Steve Knight
ID: 36576566
0
 
LVL 43

Expert Comment

by:Steve Knight
ID: 36576570
So I presume that is

string.Format("\"note pad\"");

or
string.Format("""note pad""");

0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 1

Author Comment

by:wiggy353
ID: 36576580
Tried both of those. Still just sees the argument as note.
0
 
LVL 1

Author Comment

by:wiggy353
ID: 36576615
Actually, when I do it with the "\"note pag\"", it opens a new console window titled "note pad", but doesn't launch the note pad.exe application.
0
 
LVL 1

Author Comment

by:wiggy353
ID: 36576683
which is actually what it does if I hard code note pad into the batch file... hmm.. so it is passing the argument correctly, I must need to do something with the batch file.
0
 
LVL 43

Accepted Solution

by:
Steve Knight earned 500 total points
ID: 36576694
I presume you are using something else to note pad.exe as of course it's real name is notepad.exe ?

Ahh so if that is doing the same as start then?...
If so the first command in "" is the title.  The second is the progr. to run, so
try
 "\"Some title\" note pad.exe"

Anyway I see this already in c# zone so should leave it to someone who knows the language...
0

Featured Post

Secure Your Active Directory - April 20, 2017

Active Directory plays a critical role in your company’s IT infrastructure and keeping it secure in today’s hacker-infested world is a must.
Microsoft published 300+ pages of guidance, but who has the time, money, and resources to implement? Register now to find an easier way.

Question has a verified solution.

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

Introduction: Recently, I got a requirement to zip all files individually with batch file script in Windows OS. I don't know much about scripting, but I searched Google and found a lot of examples and websites to complete my task. Finally, I was ab…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

733 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