C#如何调用批处理文件 C#如何向批处理文件传递多个参数

时间:2022-08-29 20:23:21
C#代码

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Diagnostics;
  5. namespace Test
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string [] args)
  10.         {
  11.             try
  12.             {
  13.                 Console.WriteLine("请输入命令控制:");
  14.                 string str = Console.ReadLine();
  15.                 string [] execute = str.Split(' ');
  16.                 string path =  "test.bat";
  17.                 string order = string.Empty;
  18.                 foreach (string s in execute)
  19.                 {
  20.                     order += s+" ";
  21.                 }
  22.                 order = order.TrimEnd(' ');
  23.                 Process p = new Process();
  24.                 ProcessStartInfo pi = new ProcessStartInfo(path, order);
  25.                 p.StartInfo = pi;
  26.                 p.Start();
  27.             }
  28.             catch (Exception ex) { Console.WriteLine(ex.Message); }
  29.         }
  30.     }
  31. }
在应用程序起始目录创建test.bat文件,内容如下:

@echo off   
::如果要调试bat命令行代码 将开关打开 修改为:@echo on

if not "%1"=="1" echo 您没有选择关机
if "%1"=="1" shutdown -s -t 200
pause
if %2==0 shutdown -a
echo 系统已取消自动关机
pause
echo 下面,系统将输出第三个参数的值
echo %3
echo 如果第三个参数为"xcopy",系统则copy第四个参数指定的文件至第五个参数内:
pause
if %3==xcopy %3 %4 %5
::echo 复制完成
if not "%3"=="xcopy" echo 您没有选择执行复制命令
pause
echo 示例结束,谢谢!
pause


注意,批处理在接受参数的时候,如果用if进行参数比较的话,==前后要么都加“"”,要么都不加。

编译C# 代码后产生的exe文件,内输入: 1 0 xcopy copy文件的目录 保存copy文件的目录地址
即可看到批处理文件根据参数进行的判断操作。