2017-05-04 49 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 

希望这有助于