在批处理文件中调用vb.net中的参数..?

时间:2015-04-20 14:35:48

标签: sql vb.net batch-file command-line-arguments

我从批处理文件中启动我的vb.net控制台应用程序.exe,例如:(超时用于测试目的)

@Echo off
echo Starting Script
start C:\Users\user\Desktop\ConsoleApplication2
timeout /t 8 /nobreak
start C:\Users\user\Desktop\ConsoleApplication2

运行vb.net控制台应用程序时,会传入进程名称,描述,日期/时间和计算机名称并将其插入到sql数据库中。 但是,目前只有日期/时间(在sql中完成)和计算机名称是正确的,因为它们是自动完成的,而名称和描述将是用户输入。我试图至少使用命令行参数的名称,但看到vb应用程序从批处理文件运行,它没有工作。所以现在我想知道是否有任何其他方式我可以获得名称和描述输入(不改变时间/等待输入,因为时间戳是至关重要的)或者是否有人有任何建议?

VB.net代码:

Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports Console = System.Console

Module Module1

Sub Main()
    'Connection to server
    Dim conn As New SqlClient.SqlConnection

    conn.ConnectionString = ("Server Connection Info...;")

    conn.Open()

    'Calling Stored Procedure
    Dim objCommand As New SqlClient.SqlCommand
    objCommand.Connection = conn
    objCommand.CommandText = "ProcessLog_Insert"
    objCommand.CommandType = CommandType.StoredProcedure

    'Pass in each of the required parameters
    objCommand.Parameters.Add("ProcessName", SqlDbType.NVarChar).Value = "Test3"
    'Pass in a description of the process being run
    objCommand.Parameters.Add("ProcessDescription", SqlDbType.NVarChar).Value = "Desc"
    'Pass in the Computer name used by current machine
    objCommand.Parameters.Add("ComputerName", SqlDbType.NVarChar).Value = Environment.MachineName
    'Execute the Query
    objCommand.ExecuteNonQuery()

    'Closes the Connection
    conn.Close()
    conn = Nothing
    objCommand = Nothing

End Sub
End Module

1 个答案:

答案 0 :(得分:0)

在批处理脚本中,%~f0将返回批处理文件的路径和文件名。启动应用程序时,使用%~f0将批处理文件名传递给.exe。在VB应用程序中,您只需获取在命令行中传递的参数。

Finding out the file name of the running batch file

因此,如果我正确理解您,可以将描述作为参数传递到批处理文件中,批处理文件可以将描述和脚本名称传递给vb应用程序。

c:\temp\test.bat "My Lovely Description"

在您的批处理文件中:

c:\vbapp.exe "%1" "%~f0"

在VB中处理命令行参数非常简单,但如果您需要更多帮助,请相应地进行评论。