来自表单的输入可以';t执行.bat文件

本文关键字:执行 文件 bat 表单 输入 | 更新日期: 2023-09-27 17:57:32

大家好,我已经创建这个程序一天了。但我似乎无法让它发挥作用。我想要的是,我有一个windows窗体,它将获得IP地址输入并执行.bat文件。

@echo off
wmic /node:x computersystem get username 

其中x是我的IP的字符串变量。该命令将打印出当前登录的用户名。

这是我的c#代码:

using System;
using System.Diagnostics;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace wmic_forms
{
  public partial class Form1 : Form
  {
    public Form1()
    {
        InitializeComponent();
    }
    public string x;
    private void button1_Click(object sender, EventArgs e)
    {
        ProcessStartInfo psi = new ProcessStartInfo();
        psi.FileName = "C:''ken.bat";
        Process p = Process.Start(psi);
        string strOutput = p.StandardOutput.ReadToEnd();
        //p.WaitForExit();
        psi.UseShellExecute = false;
        psi.RedirectStandardOutput = true;
        psi.Arguments = textBox1.Text;
        MessageBox.Show(strOutput);
        //Console.WriteLine(strOutput);
        //Console.ReadLine();
    }
    private void textBox1_TextChanged(object sender, EventArgs e)
    {
       //my input text box for IP
        x = textBox1.Text;
    }
  }
}

代码运行时没有任何错误。但它只会打印出.bat文件中的全部字符串。请给我反馈如何将变量x传递到.bat文件并执行其命令。

来自表单的输入可以';t执行.bat文件

不需要批处理文件,只需使用这些参数运行wmic即可。尤其是你不需要遵循将文件存储在系统文件夹(如C:驱动器)中的恶意软件做法。

至于代码中的特定问题,您将在之后而不是之前设置流程对象的属性。当然,它们不再重要了。

当我们讨论重构的话题时,我要提醒你,现在已经不是1985年了,因为操作系统不会暴露其内部工作。您可以使用托管类直接从C#轻松访问WMI API:https://msdn.microsoft.com/en-us/library/system.management.managementscope(v=vs.110).aspx