2017-05-04 131 views
0

我的批處理腳本只是似乎跳過了我,如果其他部分...也許它只是死了......我不知道......Windows批處理忽略的if else

這是爲什麼?

@echo on 
echo Welche URL soll in Chrome geoeffnet werden? (Enter = lamp.dev) 
echo Die URL bitte ohne http/https 
echo. 
set /p url=URL: 
pause 
IF %url="" (
    "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://lamp.dev --new-window "https://lamp.dev" 
)ELSE(
    "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://%url% --new-window "https://%url%" 
) 
pause 
+3

變量需要被封閉在百分號,而不是僅僅的佼佼者。相等的比較運算符是'=='。如果一方被引用,另一方需要引用。更好地使用'如果已定義的url'來測試是否設置了var。否則需要圍繞它的空格')否則('。沒有堅定的語法你的標題看起來不合適 – LotPings

回答

2

我將簡化這樣的:

@echo off 
echo Welche URL soll in Chrome geoeffnet werden? (Enter = lamp.dev) 
echo Die URL bitte ohne http/https 
echo. 
set /p url=URL: 
pause 
IF NOT DEFINED url SET "url=lamp.dev" 
"%ProgramFiles(x86)%\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://%url% --new-window "https://%url%" 
pause 
+0

建議把引號放在設置變量或一個可能會驚訝於空格:'set/p「url = URL :'' –

+0

儘管建議不需要OP的代碼,但OP已經在最後包含了一個預期的單個空間,所以在默認大小的cmd窗口中,提示後的一些意外空白不會造成危害 – Compo

0

變量在%括起來引用。取而代之的%url=""使用"%url%"==""

此外,你應該用引號將set /p命令顯示在末尾的空白,並使用​​來檢查,如果一個變量的定義。

@echo off 
echo Welche URL soll in Chrome geoeffnet werden? (Enter = lamp.dev) 
echo Die URL bitte ohne http/https 
echo. 
set /p "url=URL: " 
if not defined url (
    "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://lamp.dev --new-window "https://lamp.dev" 
) else (
    "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://%url% --new-window "https://%url%" 
) 
+0

Sam,your答案包含多個錯誤 – Compo

+0

@Compo什麼類型的錯誤? – samdd

+0

您在快速編輯窗口中替換了其中的第一個,以便它不會顯示,並且稍後會顯示另一個錯誤,因此它們現在都是固定的。 – Compo

0

對於你的if語句,因爲它是一個字符串變量,所以你需要將if括在括號內。你也忘了添加結束%

set /p url=URL: 
pause 
IF "%url%"="" (
    "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://lamp.dev --new-window "https://lamp.dev" 
)ELSE(
    "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://%url% --new-window "https://%url%" 
) 
pause 

希望這有助於