2013-03-20 68 views
2

我想事先致歉,因爲此問題可能已在別處得到解答(無法找到具體答案)。我已經廣泛搜索,這使我越來越困惑。在這一點上,我想我可以簡單快速地回答我的具體問題/難題。如何將C#字符串變量傳遞給Windows窗體中的.BAT文件

我有一個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 

我怎樣才能得到蝙蝠開始:112發射蝙蝠時使用字符串「112」?

+1

你是什麼意思的「通行證」它蝙蝠?我猜你正在查找執行bat文件時的參數...... – derape 2013-03-20 14:47:09

回答

4
proc.StartInfo.Arguments = " my arguments"; 
+1

這些實際上會變成2個獨立的參數;我和論據 – NoviceProgrammer 2013-03-20 15:01:23

+2

@NoviceProgrammer這就是爲什麼'我的論據'是在其複數形式;) – LaGrandMere 2013-03-20 15:04:57

+0

:)很好,我只是認爲它可以趕上一個人無法控制 – NoviceProgrammer 2013-03-20 15:07:58

1

添加它作爲參數:

proc.StartInfo.Arguments = opconumber ; 

在bat文件,您可以通過1%得到這個。

哎呦太慢......

+0

我理解使用%1%2等參數的概念,但我會有大約200個不同的參數,並且%1%2方法只使用第一個數字,因此我需要使用三位數字,因爲我將在蝙蝠內有200多個標籤,我必須在啓動時跳轉到該標籤。抱歉沒有解釋這一點。我錯過了什麼? – HoustoneD 2013-03-20 16:06:33

+0

我試圖使用參數%1%2方法,但在處理我的bat文件中的不同標籤數時,shift命令似乎非常混亂。 – HoustoneD 2013-03-20 18:06:17

0

批處理可以使用shift命令訪問超過900個參數:

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

endlocal 
相關問題