批处理文件,将文件路径的一行输入提供给.exe并运行程序?

时间:2015-01-21 21:16:35

标签: c# batch-file console-application exe user-input

我编写了一个控制台应用程序,我们希望通过调度程序安排在一夜之间运行,但是当它启动时,它需要用户输入一个文件路径字符串,该字符串指向数据库。如何编写此批处理文件?

我拥有的是:

Console.WriteLine("DataBase file path:");
source = Console.ReadLine();

我需要自动化源代码并运行程序。

例如:

 source = "C:\Users\Documents\New folder\data.mdb"

谢谢!

修改

我们希望有两种方式来运行这个程序,一个是自动的,一个是手动的, 如果有人对如何做到这一点有任何其他想法,我愿意接受建议!

好的另一个编辑:

我有一个程序需要一个用户输入文件路径的字符串,该文件路径指向数据库。

我们想通过调度程序在一夜之间运行这个程序,并且有一个预设的文件路径字符串,可以作为用户输入。

我们还希望能够运行程序并自己输入文件路径字符串,因此硬编码不是一种选择。

我们也希望能够通过命令提示符

运行该程序

所以我想制作2个不同的批处理文件,一个有预设输入,一个没有,我只是不知道如何进行预设输入。

如果有人有建议请帮助

谢谢

3 个答案:

答案 0 :(得分:2)

如果我明白你的意思是将参数传递给批处理文件中的exe就像这样:

yourApp.exe "C:\Users\Documents\New folder\data.mdb"

然后在您的应用中,您可以检查是否没有传递参数,请用户输入路径:

static void Main(string[] args)
        {
            if (args.Length == 0)
            {

答案 1 :(得分:0)

解释您要找的内容的一种可能方式是"input redirection"

 myProgram.exe < myInput

或者您可能正在寻找使用CMD解析某些输入文件并获取第一行的一部分 - for是在CMD文件中执行此操作的方法。

请注意,通常参数作为Main的参数传递,如

static int Main(string[] args)
{
    string source;
    if (args.Length == 1)
      source = args[0];
    else
      source = Console.ReadLine();
}

答案 2 :(得分:0)

我仍然认为完全不需要批处理文件。 你可以用C#来完成所有这些:

class Program
{
    static void Main(string[] args)
    {
        string inputFile = null;

        if (args.Length > 0 && args[0].Length > 0)
        {
            inputFile = args[0];
        }
        else
        {
            Console.WriteLine("No command-line input detected. Please enter a filename:");
            inputFile = Console.ReadLine();
        }

        Console.WriteLine("Beginning Operation on file {0}", inputFile);
        /* Do Work Here */
    }
}

示例运行:

C:\> myProgram.exe  data.mdb
Beginning Operation on file data.mdb


C:\> myProgram.exe
No command-line input detected. Please enter a filename:
OtherData.mdb   // <-- typed by user at keyboard
Beginning Operation on file OtherData.mdb