2

この質問は他の場所で既に回答されている可能性があるため、事前に謝罪したいと思います(特定の回答が見つかりません)。私は広範囲に検索しましたが、ますます混乱しています。この時点で、特定の質問/ジレンマに対する簡単で迅速な回答を得ることができると考えました.

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();
   }  
   }
}

私が問題を抱えていたもう1つのことは、バックスペースキーを機能させることです。いくつかの異なるスニペットを試しましたが、うまくいきませんでした。あらゆる指摘や批判は公然と受け入れられます。前もって感謝します!

編集:

わかった。特定のラベルにスキップしたいバッチ ファイルがあります。保存した文字列変数を、bat ファイルで実行される内容の決定要因として機能させたいと考えています。以下に例を示します。

@echo off 
:111 ECHO Argument 111 
goto end 
:112 ECHO Argument 112 
goto end 
:end 
pause 

バットを起動するときに文字列「112」を使用して、バットを :112 で開始するにはどうすればよいですか?

4

3 に答える 3

4
proc.StartInfo.Arguments = " my arguments";
于 2013-03-20T14:47:01.320 に答える
1

引数として追加します。

    proc.StartInfo.Arguments = opconumber ;

バット ファイルでは、%1 を介してこれを取得できます。

うわー遅すぎる…

于 2013-03-20T14:51:41.737 に答える
0

Batch では、shiftコマンドを使用して 9 つ以上の引数にアクセスできます。

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

endlocal
于 2013-03-20T17:09:19.560 に答える