如何根据命令行中的列表框选择执行单独的脚本?
How to execute separate scripts based on list box selections in command line?
我在网上搜索过这个,但似乎找不到我要找的东西。我敢肯定这是因为我不知道术语(对不起,我不是最擅长编码的人)。
我想在命令行应用程序中列出用户可以单独 select 的项目。当他们 select 一个项目(在我的例子中是一个站点)时,我希望能够执行为该站点本地存储的特定脚本 selected。我尝试用示例 pdf 做一个 Process.Start 行,但我希望能够根据用户选择的列表中 selected 的项目执行特定文件。到目前为止,这是我的代码:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ListBoxConsole
{
class ConsoleListBox
{
static void Main()
{
Console.TreatControlCAsInput = false;
Console.CancelKeyPress += new ConsoleCancelEventHandler(BreakHandler);
Console.Clear();
Console.CursorVisible = false;
Console.Title = "List Box Items";
string[] sites = { "site1", "site2", "site3", "site4", "site5" };
WriteColorString("Choose Site using down and up arrow keys and press enter", 23, 20, ConsoleColor.Black, ConsoleColor.White);
int choice = ChooseListBoxItem(sites, 34, 3, ConsoleColor.DarkGreen, ConsoleColor.White);
// do something with choice
WriteColorString("You chose " + sites[choice - 1] + ".", 25, 22, ConsoleColor.Black, ConsoleColor.White);
Process.Start(@"C:\Users\Downloads\insp.pdf");
WriteColorString(" Press any key to exit", 27, 24, ConsoleColor.Black, ConsoleColor.White);
Console.ReadKey();
CleanUp();
}
如有任何帮助或指导,我们将不胜感激。
谢谢。
if 语句
if(sites[choice - 1] == choice1)
{
Process.Start(@"C:\Users\Downloads\insp1.pdf");
}
else if(sites[choice - 1] == choice2)
{
Process.Start(@"C:\Users\Downloads\insp2.pdf");
}
使用class来描述您的对象。这是面向对象编程的核心:
class MySite
{
public string Name;
public string Path;
}
然后,对于您的特定情况,您可以这样做:
List<MySite> mySites = new List<MySite>();
mySites.Add(new MySite() { Name = "site1", Path = @"c:\a.pdf" });
mySites.Add(new MySite() { Name = "site2", Path = @"c:\b.pdf" });
mySites.Add(new MySite() { Name = "site3", Path = @"C:\c.pdf" });
int choice = ChooseListBoxItem(mySites.Select(s=>s.Name).ToArray(), 34, 3,
ConsoleColor.DarkGreen, ConsoleColor.White);
WriteColorString("You chose " + mySites[choice - 1].Name + ".", 25, 22,
ConsoleColor.Black, ConsoleColor.White);
Process.Start(mySites[choice - 1].Path);
我在网上搜索过这个,但似乎找不到我要找的东西。我敢肯定这是因为我不知道术语(对不起,我不是最擅长编码的人)。
我想在命令行应用程序中列出用户可以单独 select 的项目。当他们 select 一个项目(在我的例子中是一个站点)时,我希望能够执行为该站点本地存储的特定脚本 selected。我尝试用示例 pdf 做一个 Process.Start 行,但我希望能够根据用户选择的列表中 selected 的项目执行特定文件。到目前为止,这是我的代码:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ListBoxConsole
{
class ConsoleListBox
{
static void Main()
{
Console.TreatControlCAsInput = false;
Console.CancelKeyPress += new ConsoleCancelEventHandler(BreakHandler);
Console.Clear();
Console.CursorVisible = false;
Console.Title = "List Box Items";
string[] sites = { "site1", "site2", "site3", "site4", "site5" };
WriteColorString("Choose Site using down and up arrow keys and press enter", 23, 20, ConsoleColor.Black, ConsoleColor.White);
int choice = ChooseListBoxItem(sites, 34, 3, ConsoleColor.DarkGreen, ConsoleColor.White);
// do something with choice
WriteColorString("You chose " + sites[choice - 1] + ".", 25, 22, ConsoleColor.Black, ConsoleColor.White);
Process.Start(@"C:\Users\Downloads\insp.pdf");
WriteColorString(" Press any key to exit", 27, 24, ConsoleColor.Black, ConsoleColor.White);
Console.ReadKey();
CleanUp();
}
如有任何帮助或指导,我们将不胜感激。
谢谢。
if 语句
if(sites[choice - 1] == choice1)
{
Process.Start(@"C:\Users\Downloads\insp1.pdf");
}
else if(sites[choice - 1] == choice2)
{
Process.Start(@"C:\Users\Downloads\insp2.pdf");
}
使用class来描述您的对象。这是面向对象编程的核心:
class MySite
{
public string Name;
public string Path;
}
然后,对于您的特定情况,您可以这样做:
List<MySite> mySites = new List<MySite>();
mySites.Add(new MySite() { Name = "site1", Path = @"c:\a.pdf" });
mySites.Add(new MySite() { Name = "site2", Path = @"c:\b.pdf" });
mySites.Add(new MySite() { Name = "site3", Path = @"C:\c.pdf" });
int choice = ChooseListBoxItem(mySites.Select(s=>s.Name).ToArray(), 34, 3,
ConsoleColor.DarkGreen, ConsoleColor.White);
WriteColorString("You chose " + mySites[choice - 1].Name + ".", 25, 22,
ConsoleColor.Black, ConsoleColor.White);
Process.Start(mySites[choice - 1].Path);