2016-11-10 26 views
0

我在這裏有一小段代碼,它打開MySQL和Apache,然後詢問用戶是否也想打開PHPMyAdmin,但它並沒有完全做到這一點,因爲它只是跳到下一行。當IF語句爲真時,Firefox沒有打開批處理

@echo off 

net start mysql 
net start Apache2.4 

set /p openPMA=Would you like to open PMA? (y/n) 

if %openPMA%=="y" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" http://localhost/phpmyadmin/ 

echo Press any key to stop the Servers 
pause >nul 

net stop mysql 
net stop Apache2.4 

我怎麼能這樣呢?

我基本上想要啓動服務器,詢問用戶他是否也想打開PMA - 如果是這樣,否則繼續 - 然後在用戶按下某個鍵時停止服務器。

感謝您提前提供任何幫助!

回答

1

就你而言,引號是從字面上理解的。這是批處理的方式,不像unix/Linux shell。

所以if %openPMA%=="y"應該是if /i "%openPMA%"=="y"如果你想避免輸入"y"

(注意,報價仍然具有其特殊意義和非常有用,例如運行包含在他們的道路空間的命令,但沒有特殊的處理完成,當涉及到字符串)

+3

...並添加'/我想讓大小寫不敏感。 @OP:你沒有指定你要輸入的內容。問題*看起來像是簡單地按輸入將使該變量保持不變在'set/p'中。因此,它不會導致'if'語法錯誤。引用雙方提供了一些安全措施。在'set/p'之前,通過使用'set「openpma = y」'來默認'y'是可能的。 – Magoo

+0

感謝您的評論和編輯。 –