VB.net程序处理命令行参数的例子
来源:互联网 发布:三国杀 郭淮 知乎 编辑:程序博客网 时间:2024/05/21 10:50
很多情况下需要支持命令行运行,但是VB中的主函数并没有直接支持命令行参数,获取方法有些特别。
今天用vb.net做了个,记录在这里以备日后查找。VB的处理与此不同,网上查了下,需要使用系统DLL文件中的GetCommandLine函数。
这里这个程序的命令行参数处理并不是很好,并不完善。命令行参数的处理还是比较复杂的。这里主要是看如何获取VB.net程序的命令行参数。
如有高人精通命令行的处理,有什么好思路也请在这里指点下。^_^
Imports System.IOModule Module1 Public AppVersion As String = "1.0" Private CommandParameters() As String Private isIllogreCase As Boolean = False Private isSearchSubDir As Boolean = False Private logFileName As String = "log.txt" Private fileFilter As String = "*.*" Private filePath As String = "./" Private LogWriter As TextWriter = Console.Out Private patternString As String Sub Main() If Not IsValidCommandLine() Then Exit Sub End If LogWriter.WriteLine("[" & DateTime.Now & "]Start.") StartFind() LogWriter.WriteLine("[" & DateTime.Now & "]end.") CloseLogWriter() End Sub Sub PrintUsage() Console.WriteLine("FindStringInFiles Version : " & AppVersion) Console.WriteLine("功能: 在符合条件的文件中查找指定的字符串。") Console.WriteLine("用法:") Console.WriteLine("FindStringInFiles ""PatternString""" & _ "[-I] [-log [filename]] [-P [drive:]path] -S [-f filter]") Console.WriteLine(" PatternString 查找的目标字符串,支持正则表达式。") Console.WriteLine(" -I 在查找时忽略大小写,不指明则匹配大小写。") Console.WriteLine(" -log [filename] 将结果保存在日志文件中,不给出文件名是默认保存在当前目录的log.txt中。") Console.WriteLine(" 不给出-log则输出结果到标准输出。") Console.WriteLine(" -P [drive:]path 指定起始路径,不指定则从当前目录开始搜索。") Console.WriteLine(" -S 是否搜索子目录,默认不搜索子目录。") Console.WriteLine(" -f filter 文件过滤条件,例如-f ’config_*.txt‘") End Sub Function IsValidCommandLine() As Boolean CommandParameters = My.Application.CommandLineArgs.ToArray If CommandParameters.Length = 0 Then PrintUsage() Return False End If InitLogWriter() LogWriter.WriteLine("FindStringInFiles Version : " & AppVersion) LogWriter.WriteLine("[" & DateTime.Now & "]CommandLine parameters : " & _ Microsoft.VisualBasic.Interaction.Command) patternString = CommandParameters(0) If Not SetPattern() Then Return False End If If Not SetFilePath() Then Return False End If IsSearchSubdirectory() If Not SetFileFilter() Then Return False End If Return True End Function Function SetPattern() For Each p In CommandParameters If 0 = String.Compare(p, "-I") Then isIllogreCase = True Exit For Else isIllogreCase = False End If Next Return True End Function Function SetFilePath() As Boolean Dim index As Integer = 0 Dim paremCount As Integer = CommandParameters.Length While index < paremCount If 0 = String.Compare(CommandParameters(index), "-P") Then ' 最后一个参数是 -P 没有参数值 If index = paremCount - 1 Then LogWriter.WriteLine("Miss value for operation '-P'!") Return False Else ' 否则-P的下一个参数就是值 filePath = CommandParameters(index + 1) Return True End If End If index += 1 End While If index >= paremCount Then fileFilter = "*.*" End If Return True End Function Sub IsSearchSubdirectory() For Each p In CommandParameters If 0 = String.Compare(p, "-S") Then isSearchSubDir = True Exit For Else isSearchSubDir = False End If Next End Sub Function SetFileFilter() As Boolean Dim index As Integer = 0 Dim paremCount As Integer = CommandParameters.Length While index < paremCount If 0 = String.Compare(CommandParameters(index), "-f") Then ' 最后一个参数是 -f 没有参数值 If index = paremCount - 1 Then LogWriter.WriteLine("Miss value for operation '-f'!") Return False Else ' 否则-f的下一个参数就是值 fileFilter = CommandParameters(index + 1) Return True End If End If index += 1 End While If index >= paremCount Then fileFilter = "*.*" End If Return True End Function Sub InitLogWriter() Dim index As Integer = 0 Dim paremCount As Integer = CommandParameters.Length While index < paremCount If 0 = String.Compare(CommandParameters(index), "-log") Then ' 参数 -log 后面带有文件名 If index < paremCount - 1 Then logFileName = CommandParameters(index + 1) End If Exit While End If index += 1 End While ' 没有指定 -log 选项 If index > paremCount Then Return End If If File.Exists(logFileName) Then File.Delete(logFileName) End If 'Create the log file. Dim sw As StreamWriter = New StreamWriter(logFileName) LogWriter = sw End Sub Sub CloseLogWriter() LogWriter.Close() End Sub Sub StartFind() LogWriter.WriteLine("找啊,找啊,找到一个在这里~") LogWriter.WriteLine("敬个礼啊,握握手。把你放在日志里~") LogWriter.WriteLine("哇喔,终于找完了 ^_^") End SubEnd Module
- VB.net程序处理命令行参数的例子
- VB.NET可选参数例子
- .NET调试处理命令行参数
- MFC程序处理命令行参数
- 一个C/C++ 命令行参数处理的程序
- Linux下C程序命令行参数处理
- python的命令行参数处理
- VB 命令行参数!
- [VB.Net]获取新实例的命令行
- linux程序的命令行参数
- 命令行参数程序的使用方法
- [VB.NET]要个VB.NET的Socket使用例子
- 一个通过命令行读取参数的例子
- vb.net 的字符串处理
- vb.net 的异步处理
- DataGridView.CellValidating 事件的VB.NET例子
- OdbcTransaction.Rollback 方法的VB.NET例子
- DataGrid.DataSource 属性的VB.NET例子
- windows下apache2.2+tomcat7.0.22+jk wamp整合 tomcat
- Hibernate缓存何时使用和如何使用
- VO(DTO)模式在分层架构设计中是否需要的扯淡
- Android牟利之道(四)--如何推广你的产品,即你的APP
- 合格,良好,优秀的程序员
- VB.net程序处理命令行参数的例子
- 测试中如何提高问题定位效率一
- 测试中如何提高问题定位效率二
- Service浅析
- 测试中如何提高问题定位效率三
- 【并查集】凌辱
- 用QT210平台运行《Linux设备驱动开发详解》实例
- linux下matlab问题及解决
- 唯一分解定理