2014-11-07 29 views
0
:start 
net view 
set nick= 
echo. 
echo. 
echo If you want to select a common target, enter one of the following: 
echo (computer1) 
echo (computer2) 
echo (computer3) 
set /P target="Enter one of the above computer names (without \\): 
IF "%target%"=="(computer1)" do(
set nick=(computer1) 
goto shortcut 
) 
IF "%target%"=="(computer2)" do(
set nick=(computer2) 
goto shortcut 
) 
IF "%target%"=="(computer3)" do(
    set nick=(computer3) 
    goto shortcut 

) 
ELSE goto shutdown 

上面的代碼是一個程序,應該允許您鍵入一個快捷方式來存儲變量暱稱中的計算機名稱。如果批處理中的字符串中的語句不返回true?

我很新的批,FYI。

當我運行該程序時,無論如何執行第一個if語句(即使%target%是不同的值)。我該如何解決這個問題?我已經完成了比較字符串的深入研究,但都沒有成功。

P.S.我需要在關機頁面中使用nick,所以我真的需要根據用戶輸入的內容設置值。此外,(電腦)不屬於該計劃的一部分;他們是我爲了隱私而替換的實際計算機名稱。

謝謝!

+0

通過句子「第一條if語句不管執行什麼」,你的意思是說你的代碼執行後變量'nick'變成'(computer1)'嗎? – 2014-11-07 01:14:13

+0

@ Fumu7是的,無論用戶輸入什麼值,變量暱稱都被設置爲(computer1)。 – ajc2000 2014-11-07 01:15:47

+0

我的壞!忘記更改if語句中的字符串。現在可能更容易理解@ Fumu7 – ajc2000 2014-11-07 01:19:48

回答

0
  1. IF "%target%"=="(computer1)" do(應該是

    IF 「%的目標%」 == 「(電腦1)」(

  2. set nick=(computer2)(和相似)應該是

    組缺口= ^(電腦2 ^)

  3. ELSE錯誤的synax,應該是

  4. 殘缺的標籤

+0

謝謝,刪除了「DO」關鍵字。 :) – ajc2000 2014-11-07 02:25:43

0

嘗試下面的代碼

:start 
net view 
set nick= 
echo. 
echo. 
echo If you want to select a common target, enter one of the following: 
echo (computer1) = home 
echo (computer2) = guy 
echo (computer3) = andre 
set /P target="Enter one of the above computer names (without \\):" 

IF "%target%"=="home" set nick=(computer1) 
IF "%target%"=="andre" set nick=(computer2) 
IF "%target%"=="guy" set nick=(computer3) 
IF "%nick%"=="" goto shutdown 
goto shortcut 

:shortcut 
    Rem program for shotcut may be placed here 
    echo "%target%" 
    goto end 

:shutdown 
    Rem program for shutdown may be placed here 

:end 

我簡化代碼的IF塊。

正如JosefZ所說,在代碼中使用「do」是錯誤的(語法錯誤)。

該錯誤會導致忽略代碼中的'first if語句',並使下一行「set nick =(computer1)」被執行。這就是爲什麼它看起來「無論如何都是第一個執行語句」的原因。

相關問題