如何使用C#向批处理文件传递参数

12

我有一个控制台文件,需要传入6个参数。

enter image description here

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

enter image description here

现在,我需要从我的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 off %1 %2 %3 %4 %5 %6 %7

@echo off

但那也不起作用。

错误图像:

2个回答

8

参数应该用空格分隔。

方法1:

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

Method 2: using 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

不,不是这样的, 你看,最后一个参数是备份文件要保存的位置, 我在批处理文件中给出了“D:\ Test”, 但在代码中我给出了“E:\”, 它将备份存储在“D:\ TEST”中, 只是简单地运行批处理文件而没有传递参数。 - VARUN NAYAK
我还在最后一张图片中添加了屏幕截图.. 请检查。 - VARUN NAYAK
@VARUNNAYAK:这可能会覆盖您的参数,请您能否展示一下批处理脚本? - Sudhakar Tillapudi
+1 @SudhakarTillapudi 谢谢朋友,你也帮了我。 - Nagaraj S
@SudhakarTillapudi 我有一个问题..我的批处理文件位于服务器上..我该如何从我的Asp.net应用程序中调用它。请回复我。 - Nagaraj S
显示剩余8条评论

4

您的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个参数。 - Sudhakar Tillapudi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接