Batch script เพื่อเปรียบเทียบค่า


1
@echo off
rem  Checks if %~1 is equal to %~2 and returns 1 if true, 0 if false.
rem  DEVS! DO NOT EDIT THIS FILE!
if "%~1"=="" goto error
if "%~2"=="" goto error
if "%~1"=="%~2" goto true
if "%~1" neq "%~2" goto false

:error
setlocal
echo error occured
endlocal

:true
setlocal
echo 1
endlocal

:false
setlocal
echo 0
endlocal

ดังนั้นเมื่อใดก็ตามที่ฉันเรียกใช้สิ่งนี้มันควรจะเปรียบเทียบว่าพารามิเตอร์ 1 เท่ากับพารามิเตอร์ 2 หรือไม่ถ้าเป็นจริงมันจะพิมพ์ 1 ถ้าเท็จจะพิมพ์ 0

สคริปต์ดูเหมือนว่าจะทำงานได้มันเปรียบเทียบ 1 และ 3 และพิมพ์ 0 (หมายความว่ามันไม่เท่ากัน) แต่เมื่อเทียบกับ 2 และ 2 มันจะพิมพ์ 1 และ 0 ใน 2 บรรทัด มันควรจะพิมพ์เพียง 1 ไม่ใช่ 1 และ 0 ฉันไม่สามารถพบปัญหาใด ๆ กับรหัสทุกคนสามารถดูปัญหาได้หรือไม่


ทำไมคุณถึงคิดว่ามันจะไม่พิมพ์ 0 หลังจากพิมพ์ 1
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams มันควรที่จะพิมพ์ 1 ถ้ามันเท่ากันไม่ใช่พิมพ์ 1 และ 0 เป็น 0 หมายถึงไม่เท่ากัน มันพิมพ์ 1 แล้วพิมพ์ 0 ในสิ่งที่เป็นจริงถ้าฉันเรียกใช้
ZeekPlayz

หลังจากแต่ละ endlocal เพิ่ม exit ในบรรทัดถัดไปภายใต้บรรทัดเหล่านั้นหรืออื่น ๆ เพียงแค่ใช้ endlocal & exit และรายงานผลลัพธ์ของคุณแทน
Pimp Juice IT

"เพราะฉันคิดอย่างนั้น" คือ ... เหตุผลที่ไม่ดี
Ignacio Vazquez-Abrams

1
โปรดทราบว่าป้ายชื่อชุดงานไม่ได้ปรับเปลี่ยนการไหลของการควบคุมวิธีที่ฟังก์ชั่นอาจใช้ในภาษาอื่น นี่คือหลักฐานการใช้ goto. พิจารณาใช้ CALL :labelname ภาวนาแทน goto เพื่อให้มันกลับมาใช้ exit ในตอนท้ายของแต่ละฟังก์ชั่นบล็อกและและออกที่ส่วนท้ายของตรรกะหลักของคุณ tutorialspoint.com/batch_script/...
Frank Thomas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.