来自表单的输入可以';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文件并执行其命令。
不需要批处理文件,只需使用这些参数运行wmic
即可。尤其是你不需要遵循将文件存储在系统文件夹(如C:驱动器)中的恶意软件做法。
至于代码中的特定问题,您将在之后而不是之前设置流程对象的属性。当然,它们不再重要了。
当我们讨论重构的话题时,我要提醒你,现在已经不是1985年了,因为操作系统不会暴露其内部工作。您可以使用托管类直接从C#轻松访问WMI API:https://msdn.microsoft.com/en-us/library/system.management.managementscope(v=vs.110).aspx