我只需要一个具体的答案: 我能够以每行所需的特定格式创建一个包含我需要的命令和选项的文件,例如:
@"C:\mydosprog\mydosprog.exe" -o=option1 -option2
@"C:\mydosprog\mydosprog.exe" -o=option1 -option2
@"C:\mydosprog\mydosprog.exe" -o=option1 -option2
... and more lines
以下是我正在使用的代码:
var launchmyfile = File.ReadAllLines(@"c:\foo\mycommands.txt");
for (int i = 0; i < inputLines.Length; i++)
System.Diagnostics.Process.Start(???????);
//this is where i'm battling and at the ??'s :-)
有一种简单而有效的方法吗? (类似于dos批处理文件,但在c#中) 如果是这样的话?
我会很感激任何提示和技巧和答案
谢谢
答案 0 :(得分:1)
您迭代inputLines
而不是launchmyfile
。
但是你需要:
从文件中删除@符号,当它在字符串内部并且在Process.Start的路径中无效时,它与verbatim decorator一样无意义
保留引号,这些可用于区分命令行和路径的路径。你需要在程序中将它们分开
// test file
File.WriteAllLines(@"C:\TEMP\TEST.TXT", new string[] {
@"""c:\windows\system32\ping.exe"" -n 3 google.com",
@"""c:\windows\system32\ping.exe"" -n 3 google.com",
@"""c:\windows\system32\ping.exe"" -n 3 google.com",
});
var launchmyfile = File.ReadAllLines(@"C:\TEMP\TEST.TXT");
for (int i = 0; i < launchmyfile.Length; i++)
{
// 2nd " breaks the path from the command line
int commandLinePos = launchmyfile[i].IndexOf("\"", 1);
// get path
string executable = launchmyfile[i].Substring(1, commandLinePos - 1);
// get command line
string commandLine = launchmyfile[i].Substring(commandLinePos + 2);
// execute
System.Diagnostics.Process.Start(executable, commandLine);
}