2015-03-25 219 views
1

如果我做(myvar可以設置爲 「hi」 值)IF在批處理文件

IF %MyVar% == "hi" (Echo Hi) 

然後我輸出

Hi 

但如果我這樣做(ProgramFile(86)設置爲C:\ Program Files文件(x86)的)

IF %ProgramFiles(x86)% == "C:\Program Files (x86)" (Echo Hi) 

然後我下了把

Files was unexpected at this time. 

如果我做的:

IF "%ProgramFiles(x86)%" == "C:\Program Files (x86)" (Echo Hi) 

然後我NO輸出

爲什麼輸出不ProgramFile(x86)的環境變量的情況下,適當地來了嗎?

+1

'set ProgramFiles(x86)'說什麼? – Stephan 2015-03-25 12:57:07

+1

無法重新創建。 'IF「%ProgramFiles(x86)%」==「C:\ Program Files(x86)」(Echo Hi)'在我的機器上回應Hi。你輸出的不足可能是錯字的結果。爲什麼不只是'如果定義的PROGRAMFILES(x86)回聲嗨'而不是? – rojo 2015-03-25 13:28:53

+0

@Stephan set ProgramFiles(x86)給出輸出C:\ Program Files(x86) – 2015-03-26 10:23:50

回答

1

If命令擴展名被更改是否啓用如下:

  • IF [/I] string1 compare-op string2 command
  • IF CMDEXTVERSION number command
  • IF DEFINED variable command

其中compare-op可能之一:

EQU - equal 
NEQ - not equal 
LSS - less than 
LEQ - less than or equal 
GTR - greater than 
GEQ - greater than or equal 

/I開關,如果指定,說做不區分大小寫的字符串比較。 /I交換機也可以用於IF的string1==string2形式。這些比較是通用的,因爲如果string1和string2都包含所有數字,那麼字符串將轉換爲數字並執行數字比較。

使用compare-op/I可以更好;

,所以你可以試試這個代碼:

IF /I "%ProgramFiles(x86)%" equ "C:\Program Files (x86)" (echo Hi) 

但也許稱道的文本是無效的:

CMDEXTVERSION條件的作用跟ERRORLEVEL的一樣,除了它是在一個比較與命令擴展關聯的內部版本號。第一個版本是1.當將重要增強添加到命令擴展時,它會增加1。命令擴展禁用時,CMDEXTVERSION條件永遠不會成立。

+0

試試這個'IF%ProgramFiles(x86)%equ%ProgramFiles(x86)%嗨)'! – 2015-03-25 14:03:36