如何将c#字符串变量从Windows窗体传递到.bat文件
本文关键字:窗体 文件 bat Windows 字符串 变量 | 更新日期: 2023-09-27 18:05:09
我想提前道歉,因为这个问题可能已经在其他地方回答了(找不到具体的答案)。我已经广泛地搜索了,这让我越来越困惑。在这一点上,我认为我可以得到一个简单的快速回答我的具体问题/困境。
我有一个c# Windows窗体应用程序。我正在做我的测试与文本框和按钮。我希望用户在文本框中输入一个3位数的数字,然后单击按钮将3位数的用户输入保存为字符串值,然后启动一个预先确定的. bat文件。然后,我想让输入的GOTO 字符串由我的。bat文件执行。以下是目前为止的内容:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ComboBoxAndButton
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !char.IsDigit(e.KeyChar);
}
public string opconumber;
private void textBox1_TextChanged(object sender, EventArgs e)
{
opconumber = textBox1.Text;
}
private void button1_Click(object sender, EventArgs e)
{
Start();
}
private void Start()
{
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = @"C:'mybat.bat";
//I am guessing that i need my string inserted somewhere in here.
proc.StartInfo.RedirectStandardError = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
proc.EnableRaisingEvents = true;
proc.Start();
proc.WaitForExit();
this.Close();
}
}
}
另一件事我有一个问题是让退格键工作。我尝试了几个不同的片段,但都没有得到正确的结果。任何建议或批评都是公开接受的。提前感谢!
编辑:OK。我有一个批处理文件,我想跳到一个特定的标签。我希望我保存的字符串变量作为决定在bat文件中执行的内容的因素。下面是一个例子:
@echo off
:111 ECHO Argument 111
goto end
:112 ECHO Argument 112
goto end
:end
pause
在启动bat时如何使用字符串"112"使bat从:112开始?
proc.StartInfo.Arguments = " my arguments";
添加参数:
proc.StartInfo.Arguments = opconumber ;
在bat文件中,你可以通过%1得到这个。
哎呀,太慢了…
在Batch中,您可以使用shift
命令访问9个以上的参数:
@echo off &setlocal
:start
echo %~1
shift /1
if "%~1" neq "" goto :start
endlocal