2013-02-07 279 views
-1

我想要做的是寫一個批處理文件,當一個指定的答案時,會得到另一個點,並寫一個批處理文件,然後將被調用運行。如果還有任何其他答案,它只是轉到另一個點,並遵循一系列是/否的答案。批處理文件,寫入另一個批處理文件

到目前爲止我已經創建了兩個批處理文件。一個只是教我如何使用set和if命令。另一個是針對上述問題。

這裏有兩個文本文件批次:

@echo off 
echo What is your first and last name? 
set /p answer 
if /i {%answer%}=={Tyler Zieske} (call tyler.bat) 

第二個文件(tyler.bat)

@echo off 
echo Are you from South Dakota? 
set /p answer=Yes or No (Y/N)? 
if /i {%answer%}=={y} (goto :yes) 
if /i {%answer%}=={yes} (goto :yes) 
goto :no 
:yes 
echo Your name must be Tyler Zieske 
pause 

:no 
echo Are you a child? 
set /p ans=Yes or No (Y/N)? 
if /i {%ans%}=={y} (goto :tyler) 
if /i {%ans%}=={yes} (goto :tyler) 
goto :zieske 
:tyler 
echo Your name must be Tyler Zieske 
pause 

:zieske 
echo You must not be Tyler Zieske 
pause 

編輯:

而是所有的麻煩,有什麼如果我只是將原始批處理文件中的文本複製到新的批處理文件中?

+1

您還沒有提出任何問題 – dbenham

+1

第二批文件可能只是您調用的第一批函數。你試圖在這裏模擬函數調用,還是你真的需要生成一個新的批處理文件(我認爲是一個相當先進的主題)? – indiv

+0

以及我想要做的是,當「泰勒Zieske」鍵入,它將批處理文件放到計算機上。包含用於寫入新批處理文件的命令的原始批處理文件將位於USB上 –

回答

0

你忘了問一個問題。

但我猜想,你的代碼不能按預期工作。
您可以鍵入Tyler Zieske但goto失敗。

其中一個問題是此行

if /i {%answer%}=={Tyler Zieske} (goto :call 
ffff 

沒有閉合支架。
而且您應該將{%answer}更改爲"%answer%",因爲您的變體無法工作。 樣品:如果回答的內容是abc那麼exapnds到

if /i {Tyler}=={Tyler Zieske} (echo test) 

但失敗了,因爲有=={Tyler後一個空間,它被解釋爲命令,而不是作爲比較字符串的一部分。

用引號將空格轉義出來,因此仍然是比較字符串的一部分。

if /i "%answer%"=="Tyler Zieske" goto :myLabel 
+0

只需說明兩個@echo offs是兩個不同批處理文件的開頭。而且我還沒有問過一個問題,因爲我不知道在轉到之後要輸入什麼。此外,沒有侮辱意圖,但我知道(goto:電話)應該被關閉。我只是想讓它變成這樣:你的名字和姓氏是什麼?當你回答從「a」到「alskdjf; alskdjf; aslkdjfa; slkdf」的任何答案到「任何名稱」時,它將執行不同於指定答案的不同命令集,比如tyler zieske –

+1

但是'{%answer%}'會總是會導致語法錯誤,因爲任何包含空格的答案都會破壞語法。順便說一句。在你知道一個問題後你應該開個問題。 – jeb

+0

你是什麼意思:「你應該在你知道一個問題後纔開個問題?」那你的意思是應該調用另一個批處理文件來處理下一個問題嗎?所以基本上你對'{%answer%}'所說的是它的工作原理,但爲了與任何可變的答案一起工作,我應該把'%answer%'? –

相關問題