我很想知道这样简单的事情是多么简单。对每个参数进行硬编码很难排除故障,而且我不确定参数解析是如何工作的,除了循环它们之外。
如
public static Main(string args[])
{
for(int i = 0; i < args.Length; i++)
{
if(args[i] == "-path")
{
path = args[i++];
}
//bleh
}
}
我确信我在使用循环时缺少一个简单的概念,例如增量..?
更新
这是我正在采取的临时路线。我可能会改变它。但现在我得到空路径名无效
for(int i = 0; i < 0; i++)
{
if(args[0] == "-logpath" && (args[1].Contains("%") || args[1].ToLower().Contains("C") || args[1].Contains("\\")))
{
logpath = args[1];
}
if(args[2] == "-idpath" && (args[3].Contains("%") || args[3].ToLower().Contains("C") || args[3].Contains("\\")))
{
serverIDpath = args[3];
}
if(args[4] == "-queuepath" && (args[5].Contains("%") || args[5].ToLower().Contains("C") || args[5].Contains("\\")))
{
servqueuepath = args[5];
}
if(args[6] == "-ramlimit" && 0 < Convert.ToInt32(args[7]))
{
ramlimit = args[7];
}
if(args[8] == "-paramsname" && (!args[11].Contains("\\") || !args[11].Contains(":")) && (args[11].Contains(".cmd") || args[11].ToLower().Contains(".txt") || args[11].Contains("bat")))
{
spname = args[9];
}
if(args[10] == "-idname" && (!args[11].Contains("\\") || !args[11].Contains(":")) && (args[11].Contains(".cmd") || args[11].ToLower().Contains(".txt") || args[11].Contains("bat")))
{
sidname = args[111];
}
if(args[12] == "-resourcetxtpath" && (args[13].Contains("%") || args[13].ToLower().Contains("C") || args[13].Contains("\\")))
{
resourcetxt = args[13];
}
if(args[14] == "-sysresource" && (args[15].Contains("%") || args[15].ToUpper().Contains("C") || args[15].Contains("\\")))
{
ramoutput = args[15];
}
if(args[16] == "-updatepath" && (args[17].Contains("%") || args[17].ToLower().Contains("C") || args[17].Contains("\\")))
{
makeserverpath = args[17];
}
if(args[18] == "-servelogpath" && (args[19].Contains("%") || args[19].ToLower().Contains("C") || args[19].Contains("\\")))
{
Logpath = args[19];
}
if(args[20] == "-fileserve" && (args[21].Contains("%") || args[21].ToLower().Contains("C") || args[21].Contains("\\")))
{
fileservepath = args[21];
}
}
批处理文件:
set rootpath=%userprofile%\desktop
cd "%rootpath%
fileread -logpath %rootpath%\fr_log.txt -idpath %rootpath%\ -queuepath %rootpath%\queuecheck.txt -ramlimit 1600 -paramsname serverparams.cmd -idname serverid.cmd -resourcetxtpath %rootpath%\ramcheck.txt -sysresource %rootpath%\sysresourceoutput.exe -updatepath %rootpath%\update.bat -servelogpath %rootpath%\fsrv_log.txt -fileserve %rootpath%\FileServe.exe
答案 0 :(得分:0)
Codeplex - Command Line Parser Library上有一个很酷的项目,可以为你解析参数。(NuGet包:Install-Package CommandLineParser)