如何将C#字符串变量从Windows窗体传递到.BAT文件

如何将C#字符串变量从Windows窗体传递到.BAT文件,c#,.net,string,forms,batch-file,C#,.net,String,Forms,Batch File,我想提前道歉,因为这个问题可能已经在其他地方得到了回答(找不到具体答案)。我已经广泛地搜索过了,这让我越来越困惑。在这一点上,我想我可以简单快速地回答我的具体问题/困境 我有一个C#Windows窗体应用程序。我正在用一个文本框和一个按钮进行测试。我希望用户在文本框中输入一个3位数的数字,然后单击按钮将3位数的用户输入保存为字符串值,然后启动一个预定义的.BAT文件。然后,我希望输入的GOTO字符串由.BAT文件执行。以下是我到目前为止的情况: using System; using Syste

我想提前道歉,因为这个问题可能已经在其他地方得到了回答(找不到具体答案)。我已经广泛地搜索过了,这让我越来越困惑。在这一点上,我想我可以简单快速地回答我的具体问题/困境

我有一个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();
   }  
   }
}
另一件事我有一个问题是让退格键工作。我尝试了一些不同的代码片段,但没能正确理解。任何指点或批评都是公开接受的。提前谢谢

编辑:

嗯。我有一个批处理文件,我想跳到一个特定的标签。我希望我保存的字符串变量作为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获取此信息


哎呀,太慢了…

在批处理中,您可以使用
shift
命令访问9个以上的参数:

@echo off &setlocal
:start
echo %~1
shift /1
if "%~1" neq "" goto :start

endlocal

你说“传”给球棒是什么意思?我猜您在执行bat文件时正在寻找参数……这些参数实际上会变成两个独立的参数;我的和arguments@NoviceProgrammer这就是为什么我的论点是复数形式;):)很好,我只是认为它可以让人忘记使用%1%2等来理解参数概念,但我将有大约200个不同的参数,%1%2方法只使用第一个数字,因此我需要使用三位数,因为我将在bat中有200多个标签,在启动时必须跳转到这些标签。很抱歉没有解释。我是否遗漏了什么?我试图使用参数%1%2方法,但在处理bat文件中不同标签的数量时,shift命令似乎非常混乱。