@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
หลังจากแต่ละ
—
Pimp Juice IT
endlocal
เพิ่ม exit
ในบรรทัดถัดไปภายใต้บรรทัดเหล่านั้นหรืออื่น ๆ เพียงแค่ใช้ endlocal & exit
และรายงานผลลัพธ์ของคุณแทน
"เพราะฉันคิดอย่างนั้น" คือ ... เหตุผลที่ไม่ดี
—
Ignacio Vazquez-Abrams
โปรดทราบว่าป้ายชื่อชุดงานไม่ได้ปรับเปลี่ยนการไหลของการควบคุมวิธีที่ฟังก์ชั่นอาจใช้ในภาษาอื่น นี่คือหลักฐานการใช้
—
Frank Thomas
goto
. พิจารณาใช้ CALL :labelname
ภาวนาแทน goto
เพื่อให้มันกลับมาใช้ exit
ในตอนท้ายของแต่ละฟังก์ชั่นบล็อกและและออกที่ส่วนท้ายของตรรกะหลักของคุณ tutorialspoint.com/batch_script/...