Menurut ini , !==!
adalah operator string tidak-sama. Mencoba, saya dapat:
C:\> if "asdf" !==! "fdas" echo asdf
!==! was unexpected at this time.
Apa yang saya lakukan salah?
batch-file
operators
ripper234
sumber
sumber
Saya tahu ini sudah ketinggalan zaman, tetapi ini mungkin masih berguna bagi mereka yang datang terlambat ke pesta. (EDIT: diperbarui karena ini masih mendapat lalu lintas dan @ Goozak telah menunjukkan di komentar bahwa analisis asli saya terhadap sampel juga salah.)
Saya menarik ini dari kode contoh di tautan Anda:
!%1==!
hanyalah penggunaan idiomatis yang==
dimaksudkan untuk memverifikasi bahwa benda di sebelah kiri, yang berisi variabel Anda, berbeda dari benda di sebelah kanan, yang tidak. Dalam!
hal ini hanyalah placeholder karakter. Itu bisa apa saja. Jika%1
memiliki konten, maka kesetaraan akan palsu, jika tidak Anda hanya akan membandingkan!
untuk!
dan itu akan menjadi kenyataan.!==!
bukan operator, jadi menulis"asdf" !==! "fdas"
itu tidak masuk akal.Saran untuk menggunakan
if not "asdf" == "fdas"
pasti cara untuk pergi.sumber
!
digunakan di sini dalam kasus%1
kosong, sehingga menghasilkan tes!==!
, yang benar. Anda dapat menggunakan%1.==.
sebagai gantinya (hampir semua karakter akan melakukan) - tujuannya adalah untuk memastikan bahwa kedua sisi tes kesetaraan memiliki sesuatu untuk diuji. The!==!
notasi ini jelas tidak tanda tidak-sama. Lebih baik bertahan denganif not ...
.Mencoba:
Itu bekerja untuk saya di Windows XP (saya mendapatkan kesalahan yang sama seperti Anda untuk kode yang Anda posting).
sumber
NEQ biasanya digunakan untuk angka dan == biasanya digunakan untuk perbandingan string.
Saya tidak dapat menemukan dokumentasi yang menyebutkan operand ketidaksetaraan spesifik dan setara untuk perbandingan string (sebagai ganti NEQ). Solusi menggunakan JIKA TIDAK == tampaknya pendekatan yang paling masuk akal. Saya tidak bisa segera memikirkan keadaan di mana evaluasi operasi dalam file batch akan menyebabkan masalah atau perilaku yang tidak terduga ketika menerapkan metode perbandingan JIKA TIDAK == ke string.
Saya berharap saya dapat menawarkan wawasan tentang bagaimana dua fungsi berperilaku berbeda pada tingkat yang lebih rendah - akan membongkar file batch yang terpisah (yang menggunakan NEQ dan JIKA TIDAK ==) menawarkan petunjuk apa pun dalam hal API asli (didokumentasikan secara tidak resmi) panggilan API asli conhost.exe Apakah memanfaatkan?
sumber