2009-09-14 26 views

回答

374

嘗試

if NOT "asdf" == "fdas" echo asdf

17

嘗試:

if not "asdf" == "fdas" echo asdf 

這對我的作品在Windows XP(我得到同樣的錯誤,你對你發佈的代碼)。

82

改爲使用NEQ。

if "asdf" NEQ "fdas" echo asdf 
+29

這需要打開命令擴展(它們默認爲2000+以上,但可以在系統範圍內關閉或作爲cmd.exe的參數)通常情況下,您應該用setlocal打開它們,但是如果不是平等的測試,只是使用「如果不是」,它可以回溯到良好的舊DOS天 – Anders

25

我知道這已經過時了,但對於那些遲到的人來說,這仍然是有用的。 (編輯:自該更新的靜止變流和@Goozak指出在我原來的樣品的分析是不正確的,以及評論。)

我在你的鏈接拉這個從示例代碼:

IF !%1==! GOTO VIEWDATA 
REM IF NO COMMAND-LINE ARG... 
FIND "%1" C:\BOZO\BOOKLIST.TXT 
GOTO EXIT0 
REM PRINT LINE WITH STRING MATCH, THEN EXIT. 

:VIEWDATA 
TYPE C:\BOZO\BOOKLIST.TXT | MORE 
REM SHOW ENTIRE FILE, 1 PAGE AT A TIME. 

:EXIT0 

!%1==!只是一個慣用的使用==旨在驗證左側的東西,包含您的變量,不同於右側的東西,事實並非如此。在這種情況下,!只是一個字符佔位符。它可能是任何東西。如果%1包含內容,則等於將是錯誤的,如果它不是,那麼您將僅比較!!並且它將是真實的。

!==!不是一個操作符,所以編寫"asdf" !==! "fdas"是非常荒謬的。

使用if not "asdf" == "fdas"的建議絕對是您的選擇。

+0

謝謝[jatrim](http://stackoverflow.com/users/866045)..絕對有幫助尋找答案的人,而再次提出這個問題。它不像StackExchange由於問題的年齡而鎖定回答/評論的能力,所以認爲這是完全可以接受的。 – user66001

+4

在'%1'爲空的情況下使用'!',因此導致測試'!==!',這是真的。你可以使用'%1。==。''來代替(幾乎任何角色都會這樣做) - 目的是確保平等測試的兩邊都有_something_來測試。 '!==!'符號肯定是** NOT **不等號。更好地堅持'如果不是...'。 – Goozak