我从批处理文件中启动我的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
答案 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中处理命令行参数非常简单,但如果您需要更多帮助,请相应地进行评论。