对许多IF来说。有没有更好的办法?

时间:2014-11-30 15:46:14

标签: vb.net if-statement

我有这段代码:

If CheckBox1.Checked = True Then
            My.Computer.FileSystem.RenameFile("C:\Users\mario\Desktop\Dominio\1\Pc - S.txt", "Pc - S - A.txt")
            'Sleep(2000) ' to sleep for 2 second
            System.Threading.Thread.Sleep(2000)
            My.Computer.FileSystem.RenameFile("C:\Users\mario\Desktop\Dominio\1\Pc - S - A.txt", "Pc - S.txt")
        End If

        If CheckBox2.Checked = True Then
            My.Computer.FileSystem.RenameFile("C:\Users\mario\Desktop\Dominio\2\Pc - S.txt", "Pc - S - A.txt")
            'Sleep(2000) ' to sleep for 2 second
            My.Computer.FileSystem.RenameFile("C:\Users\mario\Desktop\Dominio\2\Pc - S - A.txt", "Pc - S.txt")
        End If

如果还有另外24个,那么它还会继续。我需要他们同时更改所有名称,然后等待两秒钟并同时再次更改它。我是否需要48(24 + 24)IF?

说明:

我正在创建一种超级简单的方式来摆弄我学校的计算机。这是我的想法(希望你能理解)

我在学校的每台计算机上(在启动时的regestry中)放了一个程序,它执行以下操作: (Atencion并不是真正的编程语言)

有(1){

sleep 1000        // wait 1 sec

if.FILE.EXISTS(\\domain\folder1\shutdown.txt) then{

    do: shutdown pc   // if file exist it shutdowns the pc 

}

}

这样做的是,如果域中的某个目录中有文件,它会关闭pc。 我这样做了24个,所以我需要单独关闭它们,因此有很多文件夹。 所以我可以简单地手动重命名文件,但对于24个这是很多工作。因此,我正在开发一个应用程序,询问我想要关闭的PC,然后执行:

1:重命名文件。

2:等待2秒或更长时间(以便网络中的计算机有时间验证是否有此类文件)

3:重命名文件,以便当pc重新启动时,它不会再次关闭。

你有没有得到我想做的事情?是的,有更多的正统方法可以做到这一点。但这非常简单,这比任何事情都更重要。 (稍后将使用更合适的方式执行此操作并通过网络执行其他选项)

2 个答案:

答案 0 :(得分:0)

由于唯一的区别是文件路径中的单个数字,为​​什么不这样做呢?

var dict = new Dictionary<CheckBox, string>();
dict.Add(CheckBox1, "1");
dict.Add(CheckBox2, "2");
//etc

foreach (var kvp in dict)
{
    if(kvp.Key.Checked == true)
    {
        My.Computer.FileSystem.RenameFile(String.Format("C:\Users\mario\Desktop\Dominio\{0}\Pc - S.txt", kvp.Value ), "Pc - S - A.txt")
    }
}

我们创建一个通用字典来存储复选框与字符串/数字的关联,然后遍历字典,检查值。我们使用格式字符串(您可以使用字符串连接)将字符串/数字插入到文件路径字符串中。

注意,这是在C#中,因为我不是VB程序员。语法可能略有不同。

答案 1 :(得分:0)

由于您的目的是远程关闭PC,为什么不实际关闭它们的代码,而不是一些hackish&#34;创建文件然后等待2秒&#34;接近?

同样,这是C#,但翻译应该非常简单:

var ComputerNames = new List<string>() {"Computer1", "Computer2", "Computer3"};

foreach(var pc in ComputerNames)
{
    Process.Start("shutdown","-s -m \\\\" + pc);
}