C# How to use Directory White Spaces into process.arguements?

10,626

Solution 1

You need to escape the " by appending a \ to them (\") - for normal strings, or doubling them ("") for verbatim string literals (those starting with @):

process.StartInfo.Arguments = @"-r C:\test\ftk\ntuser.dat -d ""C:\System Volume Information\" + restoreFolder.Name + @""" -p runmru";

Solution 2

Wrap that path in double quotes:

process.StartInfo.Arguments = @"-r C:\test\ftk\ntuser.dat -d ""C:\System Volume Information\" + restoreFolder.Name + @""" -p runmru";

Solution 3

Perhaps

process.StartInfo.Arguments = @"-r C:\test\ftk\ntuser.dat -d C:\System Volume Information\" + restoreFolder.Name + " -p runmru";

should be

process.StartInfo.Arguments = @"-r ""C:\test\ftk\ntuser.dat"" -d ""C:\System Volume Information\""" + restoreFolder.Name + " -p runmru";
Share:
10,626

Related videos on Youtube

JavaNoob
Author by

JavaNoob

Updated on May 12, 2022

Comments

  • JavaNoob
    JavaNoob about 2 years

    The program created utilizes a 3rd party tool to generate a log file.

    However the arguments provided for the the tool requires various files from Directory locations as part of generating the logs. Therefore the main argument of @"-r C:\test\ftk\ntuser.dat -d C:\System Volume Information\" + restoreFolder.Name + " -p runmru"; would be used to generate the logs.

    May someone advise on how to make the arguments of "C:\System Volume Information\" be processed by the system with the white spaces in placed? Thanks!

    The codes:

                Process process = new Process();
                process.StartInfo.FileName = @"C:\test\ftk\ripxp\ripxp.exe";
                process.StartInfo.Arguments = @"-r C:\test\ftk\ntuser.dat -d C:\System Volume Information\" + restoreFolder.Name + " -p runmru";
                process.StartInfo.CreateNoWindow = false;
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.RedirectStandardInput = true;
                process.StartInfo.RedirectStandardError = true;
                process.Start();
    
  • JavaNoob
    JavaNoob over 13 years
    The restoreFolder.Name is a system name I thinker perhaps you placed an extra " or \ in the wrong area? even the above codes are showing errors already.
  • JavaNoob
    JavaNoob over 13 years
    The system is showing that there is a unclosed " near the triple """.
  • Oded
    Oded over 13 years
    @JavaNoob - Yeah. You were mixing verbatim string with non verbatim strings... Each needs different escaping. Corrected...
  • JavaNoob
    JavaNoob over 13 years
    Reps up for answer but try not to use too much "" cause its confusing.