批处理 调用 C#写的程序

时间:2022-05-31 23:11:34
需求是:我用C#创建一个文本文件,写入一些字符串,其中有几个字符串是变化的,
 
        需要外部输入。

这个文本文件创建,写入都很简单,代码好实现,.

但用动态库,还是控制台写,怎么调用..

但是,如何让批处理程序可以调用?

先谢谢大家了....

16 个解决方案

#1


没看懂意思,

C#设计winform程序,开个窗口,创建文件、写入固定字符+用户输入字符,保存,ok了。

可是这和批处理有什么关系呢。

#3


winform,console的都能做出来,简单的文本文件操作。
但是现在要用批处理进行操作,
我对批处理不了解,
就想问下:用批处理如何调用C#程序,如何调用的....?

#4


批处理调用使用写成控制台或winform都可以的。
卸载批处理中:start test.exe,就可以调用你的程序了

#5


  你批处理啥意思?一次调用多次

#6


引用 5 楼 zincy 的回复:
你批处理啥意思?一次调用多次

不是是调用多次才用批处理,
是因为还有其他的操作,
这里创建的文件只是批处理中的一步而已...


我还是没怎么理解...
谁能给我个小例子啊?

#7


刚才看了下批处理命令,
我这个应该是属于调用start命令吧?

那我C#程序需要怎么处理呢?
因为我这个创建文件的程序需要传入4个参数,
举个例子,这里需要传入4个int值,
如何做呢?

#8


看看我给你的帖子,里面有你要的东西!

#9


谢谢你,那个帖子和我的需要不太一样。。。
我看了下批处理命令,
可能我把我知道的描述错了。

我用批处理的start命令调用我自己的exe,或者动态库什么的?
因为我这里需要传入参数,例如4个int参数,
我在用批处理调用C#程序时,如何还传递这4个参数呢?

#10


或者具体点说,
咱们在cmd下可以调用
dir /p/w

用C#写的程序,可以在控制台下用
自定义命令 -参数1 -参数2 -参数3 -参数4
这种形式调用C#写的程序吗?

#11


你再仔细看看:

        private void Form1_Load(object sender, EventArgs e)
        {
            Process p = new Process();
            p.StartInfo.FileName = "format.com";
            p.StartInfo.Arguments = " G: /FS:FAT /Q";   //这里就是命令行参数,用空格分隔
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = true;//true表示不显示黑框,false表示显示dos界面 
            p.StartInfo.UseShellExecute = false;


            p.EnableRaisingEvents = true;

            p.Exited += new EventHandler(p_Exited);
            p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
            p.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);

            p.Start();
            p.StandardInput.WriteLine("");
            p.StandardInput.WriteLine("");

            //开始异步读取输出
            p.BeginOutputReadLine();
            p.BeginErrorReadLine();

            //调用WaitForExit会等待Exited事件完成后再继续往下执行。
            p.WaitForExit();
            p.Close();
            
            Console.WriteLine("exit");

        }

        void p_OutputDataReceived(Object sender, DataReceivedEventArgs e)
        {
            //这里是正常的输出
            Console.WriteLine(e.Data);

        }

        void p_ErrorDataReceived(Object sender, DataReceivedEventArgs e)
        {
            //这里得到的是错误信息
            Console.WriteLine(e.Data);

        }

        void p_Exited(Object sender, EventArgs e)
        {
            Console.WriteLine("finish");
        }

    }

#12


引用 11 楼 sdl2005lyx 的回复:
你再仔细看看:

C# code


        private void Form1_Load(object sender, EventArgs e)
        {
            Process p = new Process();
            p.StartInfo.FileName = "format.com";
            p.……


十分感谢你~
不过C#里面的代码我这里一共就几行而已,
我现在遇到的问题是,如何用cmd控制台调用这个程序?
而且需要外部传入参数,4个参数。
在cmd执行的方式例如:命令 -参数1 -参数2 -参数3 -参数4
这种形式如何写?
我现在可以用批处理的start命令调用exe文件,
但需要传入的4个参数无法传入。
或许不需要EXE,但如何做到上面那个在cmd中的执行方式,不知道..

#13


修改main方法,如下:
 static void Main(string[] args)
        {
            Console.Write(args[0]);
            Console.Write(args[1]);
            Console.Write(args[2]);
            Console.Write(args[3]);
}

#14


你调用时,传入的参数就在args这个数组里存放,
你只要遍历这个数组,就能得到你要多参数了。
就是按照你传入的参数顺序的。

#15


谢谢 mjp1234airen4385

我现在也是在args中提取参数,
我开的控制台找到exe所在的目录下,
我exe叫test.ext
我在控制台中输入
test 1,2,3,4
1234为我要输入的参数
如果是string,是不是就是
test “123” “456” “789” “012”
但现在在控制台这样输入执行了,但不对....
我还在找,这个不知道进程往哪里附加,打不上断点......

#16


哦了,很简单的问题让我弄复杂了。。。
咳~
自己真笨,
谢谢 LS几位,
谢谢 mjp1234airen4385

#1


没看懂意思,

C#设计winform程序,开个窗口,创建文件、写入固定字符+用户输入字符,保存,ok了。

可是这和批处理有什么关系呢。

#2


#3


winform,console的都能做出来,简单的文本文件操作。
但是现在要用批处理进行操作,
我对批处理不了解,
就想问下:用批处理如何调用C#程序,如何调用的....?

#4


批处理调用使用写成控制台或winform都可以的。
卸载批处理中:start test.exe,就可以调用你的程序了

#5


  你批处理啥意思?一次调用多次

#6


引用 5 楼 zincy 的回复:
你批处理啥意思?一次调用多次

不是是调用多次才用批处理,
是因为还有其他的操作,
这里创建的文件只是批处理中的一步而已...


我还是没怎么理解...
谁能给我个小例子啊?

#7


刚才看了下批处理命令,
我这个应该是属于调用start命令吧?

那我C#程序需要怎么处理呢?
因为我这个创建文件的程序需要传入4个参数,
举个例子,这里需要传入4个int值,
如何做呢?

#8


看看我给你的帖子,里面有你要的东西!

#9


谢谢你,那个帖子和我的需要不太一样。。。
我看了下批处理命令,
可能我把我知道的描述错了。

我用批处理的start命令调用我自己的exe,或者动态库什么的?
因为我这里需要传入参数,例如4个int参数,
我在用批处理调用C#程序时,如何还传递这4个参数呢?

#10


或者具体点说,
咱们在cmd下可以调用
dir /p/w

用C#写的程序,可以在控制台下用
自定义命令 -参数1 -参数2 -参数3 -参数4
这种形式调用C#写的程序吗?

#11


你再仔细看看:

        private void Form1_Load(object sender, EventArgs e)
        {
            Process p = new Process();
            p.StartInfo.FileName = "format.com";
            p.StartInfo.Arguments = " G: /FS:FAT /Q";   //这里就是命令行参数,用空格分隔
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = true;//true表示不显示黑框,false表示显示dos界面 
            p.StartInfo.UseShellExecute = false;


            p.EnableRaisingEvents = true;

            p.Exited += new EventHandler(p_Exited);
            p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
            p.ErrorDataReceived += new DataReceivedEventHandler(p_ErrorDataReceived);

            p.Start();
            p.StandardInput.WriteLine("");
            p.StandardInput.WriteLine("");

            //开始异步读取输出
            p.BeginOutputReadLine();
            p.BeginErrorReadLine();

            //调用WaitForExit会等待Exited事件完成后再继续往下执行。
            p.WaitForExit();
            p.Close();
            
            Console.WriteLine("exit");

        }

        void p_OutputDataReceived(Object sender, DataReceivedEventArgs e)
        {
            //这里是正常的输出
            Console.WriteLine(e.Data);

        }

        void p_ErrorDataReceived(Object sender, DataReceivedEventArgs e)
        {
            //这里得到的是错误信息
            Console.WriteLine(e.Data);

        }

        void p_Exited(Object sender, EventArgs e)
        {
            Console.WriteLine("finish");
        }

    }

#12


引用 11 楼 sdl2005lyx 的回复:
你再仔细看看:

C# code


        private void Form1_Load(object sender, EventArgs e)
        {
            Process p = new Process();
            p.StartInfo.FileName = "format.com";
            p.……


十分感谢你~
不过C#里面的代码我这里一共就几行而已,
我现在遇到的问题是,如何用cmd控制台调用这个程序?
而且需要外部传入参数,4个参数。
在cmd执行的方式例如:命令 -参数1 -参数2 -参数3 -参数4
这种形式如何写?
我现在可以用批处理的start命令调用exe文件,
但需要传入的4个参数无法传入。
或许不需要EXE,但如何做到上面那个在cmd中的执行方式,不知道..

#13


修改main方法,如下:
 static void Main(string[] args)
        {
            Console.Write(args[0]);
            Console.Write(args[1]);
            Console.Write(args[2]);
            Console.Write(args[3]);
}

#14


你调用时,传入的参数就在args这个数组里存放,
你只要遍历这个数组,就能得到你要多参数了。
就是按照你传入的参数顺序的。

#15


谢谢 mjp1234airen4385

我现在也是在args中提取参数,
我开的控制台找到exe所在的目录下,
我exe叫test.ext
我在控制台中输入
test 1,2,3,4
1234为我要输入的参数
如果是string,是不是就是
test “123” “456” “789” “012”
但现在在控制台这样输入执行了,但不对....
我还在找,这个不知道进程往哪里附加,打不上断点......

#16


哦了,很简单的问题让我弄复杂了。。。
咳~
自己真笨,
谢谢 LS几位,
谢谢 mjp1234airen4385