【问题标题】:How to pass parameters to a batch file using c#如何使用c#将参数传递给批处理文件
【发布时间】:2014-01-04 19:48:07
【问题描述】:

我有一个控制台文件,它需要 6 个参数

为了运行这个 exe,我创建了一个批处理文件,

现在,我需要将此参数从我的一个 Windows 应用程序发送到批处理文件。这是代码:

         string consolepath = @"E:\SqlBackup_Programs\console-backup\Backup_Console_App";
            string Pc = "VARUN-PC";
            string database = "Smart_Tracker";
            string UserName = "sa";
            string Password = "admin@12";
            string bacPath = @"D:\TEST";

            System.Diagnostics.Process proc = new System.Diagnostics.Process();
            proc.StartInfo.FileName = System.Configuration.ConfigurationManager.AppSettings["BATCH_FULLBACKUP"].ToString().Trim();
            proc.StartInfo.Arguments = String.Format(consolepath,Pc,database,UserName,Password,"F",bacPath);
            //set the rest of the process settings
            proc.Start();

但它不起作用。我试图更改我的批处理文件,例如,

@echo 关闭 %1 %2 %3 %4 %5 %6 %7

@echo 关闭

但这也没有用。

错误图片:

【问题讨论】:

    标签: c# batch-file


    【解决方案1】:

    Arguments 应该是 seperated by space

    方法一:

    proc.StartInfo.Arguments =consolepath+" "+Pc+" "+database+" "+UserName+" "+Password+" "+"F"+" "+bacPath;
    

    方法二:使用String.Format()

    proc.StartInfo.Arguments =String.Format("{0} {1} {2} {3} {4} {5} {6}",consolepath,Pc,database,UserName,Password,"F",bacPath);  
    

    解决方案 2:您不应该硬编码批处理文件中的参数值

    试试这个:改变批处理文件如下

    %1 %2 %3 %4 %5 %6 %7
    

    【讨论】:

    • 当我使用以上两种方法时,我的批处理文件运行 exe,根据它自己的值,我的意思是它没有从这个参数中获取值,所以,批处理文件中是否需要任何更改? ?目前我的批处理文件与显示上图相同,我在代码“E:\”中给出了不同的最后一个参数,但仍然遵循批处理文件路径。
    • @VARUNNAYAK:实际上它有效,让我检查一下。
    • @VARUNNAYAK:你检查了吗?它对我有用。
    • 不,不是,看,最后一个参数是保存这个备份文件的位置,我在批处理文件中给出“D:\Test”,但在代码中我给它“E:\”,它的将备份存储在“D:\TEST”中,它只是运行批处理文件并没有传递参数
    • 我还在最后一张图片中添加了那个屏幕截图。检查一下
    【解决方案2】:

    您的 String.Format 调用缺少格式。

    proc.StartInfo.Arguments 应该更像

    String.Format("{0} {1} {2} {3} {4} {5} {6}",  consolepath,Pc,database,UserName,Password,"F",bacPath);
    

    但是,请记住,您的参数可能包含空格。我会这样做。

    var args = new string[] { consolepath,Pc,database,UserName,Password,"F",bacPath };
    var startupInfo = String.Join(" ", args.Select(x => "\"" + x + "\""));
    

    【讨论】:

    • {7} 不是必需的,因为只有 7 个参数。
    猜你喜欢
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多