【问题标题】:Exec batch file not run with space in project folder执行批处理文件未在项目文件夹中使用空间运行
【发布时间】:2013-03-05 10:39:14
【问题描述】:

我有一个简单的问题,但我不知道如何处理。那就是:我有一个简单的批处理文件,可以删除文件夹中的所有文件(例如)。我可以在任何地方运行它,但我想通过 C# 的应用程序执行它。一切正常如果项目文件夹不包含空格(“示例:C:\Project Test\test.bat”将出错“但“C:\ProjectTest\test.bat”已完成”)。

下面是我要运行的源代码(我再说一遍:如果项目文件夹在文件夹名称中包含空格,它只会出错)。如果项目文件夹没有空间,运行文件批处理时不会出错。

        Process myProcess = new Process();
        myProcess.StartInfo.FileName = "cmd.exe";
        myProcess.StartInfo.Arguments = "D:\\prepare.bat";
        myProcess.StartInfo.WorkingDirectory = "D:\\";
        myProcess.StartInfo.UseShellExecute = false;
        myProcess.StartInfo.RedirectStandardOutput = true;

        //myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        myProcess.Start();
        StreamReader myStreamReader = myProcess.StandardOutput;
        string myString = myStreamReader.ReadLine();
        MessageBox.Show(myProcess.StartInfo.Arguments + " " + myString);
        myProcess.WaitForExit();

谢谢。

【问题讨论】:

    标签: c# file batch-file command dos


    【解决方案1】:

    尝试将脚本路径放在引号中:

    myProcess.StartInfo.Arguments = "\"D:\\Project Test\\prepare.bat\"";
    

    【讨论】:

    • 非常感谢。与 Chilaka Umesh 相同
    【解决方案2】:

    用这样的引号将你的论点括起来:

    myProcess.StartInfo.Arguments = "\"C:\\Project Test\\test.bat\"" 
    

    myProcess.StartInfo.Arguments = @"\"C:\Project Test\test.bat\""
    

    当传递给 cmd 时,参数必须被引用。

    【讨论】:

    • 非常感谢。与 Chilaka Umesh 相同。
    【解决方案3】:

    "\"C:\Project Test\test.bat\""代替"C:\Project Test\test.bat"

    【讨论】:

    • 非常感谢。我修复它作为你的帮助。现在它完美地工作了。再次感谢。
    猜你喜欢
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 2013-03-01
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多