繁体   English   中英

如何将输入传递给Visual Studio控制台应用程序中的main子程序,以便以批处理模式运行exe?

[英]How to pass input to main sub in Visual Studio console application for an exe to be run in batch mode?

我是Visual Studio中的新手。 我应该创建一个以批处理模式运行的exe文件。 exe将读取一个文本文件并输出另一个文本文件。 这两个文本文件的名称是应用程序的输入。 创建exe文件后,我将以批处理模式运行它。

批处理文件将类似于(run_exe.bat)app.exe input_file.txt output_file.txt

我的代码如下。 问题是将输入(文件名)放入main子目录。 我在行a3 = a1 + a2处收到一个奇怪的错误,因为“在microsoft.visualbasic.dll中发生了System.IO.IOexception类型的未处理异常”

我认为问题是输入fil_na1和fil_na2。 我应该把这些投入放在哪里?

我的代码如下:

模块Module1

Sub Main(ByVal fil_na1 As String, ByVal fil_na2 As String)

    Dim fil_nu1 As Integer
    fil_nu1 = FreeFile()

    FileOpen(fil_nu1, fil_na1, OpenMode.Input, OpenAccess.Read, OpenShare.Shared)

    Dim str_lin As String
    Dim a1 As Integer, a2 As Integer

    str_lin = FileSystem.LineInput(fil_nu1)
    a1 = Val(str_lin)

    str_lin = FileSystem.LineInput(fil_nu1)
    a2 = Val(str_lin)

    FileSystem.FileClose(fil_nu1)

    Dim a3 As Integer
    a3 = a1 + a2

    Dim fil_nu2 As Integer
    fil_nu2 = FreeFile()

    FileOpen(fil_nu2, fil_na2, OpenMode.Output, OpenAccess.Write, OpenShare.Shared)
    FileSystem.WriteLine(fil_nu2, a3)
    FileSystem.FileClose(fil_nu2)

End Sub

终端模块

您可以使用此功能获取所有命令行。

Environment.GetCommandLineArgs()

你可以这样看

Console.WriteLine(Environment.GetCommandLineArgs().Length)

For Each commandArgument As String In Environment.GetCommandLineArgs()
    Console.WriteLine(commandArgument)
Next

现在,所有有关解析数组的操作,确保您具有足够的参数并且它们有效。

另外,建议您不要使用FileOpen,而是使用System.IO命名空间的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM