ฉันจะใช้ IF EXIST กับไฟล์บางประเภทได้อย่างไร


1

ฉันกำลังพยายามสร้างสคริปต์ชุดที่จะ perfotm หนึ่งในสองการกระทำขึ้นอยู่กับว่าประเภทไฟล์ที่ระบุมีหรือไม่มี ฉันกำลังใช้ If EXIST และ IF NOT EXISTแต่ฉันไม่สามารถตรวจสอบสิ่งเหล่านี้ได้จริงหากมีไฟล์ประเภทนั้นอยู่ นี่คือตัวอย่างรหัสของฉัน:

IF NOT EXIST *.ini GOTO :NOPROFILE
IF EXIST *.ini GOTO :IMPORT

เป็นไปได้หรือไม่ฉันจะบรรลุเป้าหมายได้โดยการประกาศประเภทไฟล์หรือส่วนขยายเฉพาะได้อย่างไร


ลอง IF EXIST "*.ini". ลองด้วยเส้นทางโฟลเดอร์
harrymc

ฉันลองใส่คำจำกัดความของนามสกุลในเครื่องหมายคำพูด @harrymc แล้วไม่มีลูกเต๋า
Mr. Mendelli

บรรทัดข้างต้นของคุณทำงานได้ที่นี่โดยไม่เห็นรหัสที่สมบูรณ์ของคุณมันยากที่จะช่วยเหลือ หากไม่มีพา ธ จะตรวจสอบโฟลเดอร์ปัจจุบันไม่จำเป็นต้องมีแบตช์อยู่
LotPings

ฉันกำลังตรวจสอบไดเรกทอรีการทำงาน @LotPings (`.`) ฉันลองใช้ตัวแปรพา ธ เช่นกัน แต่มันก็ไม่ได้เปลี่ยนอะไรเลย นี่เป็นเพียงการตรวจสอบเบื้องต้นที่ฉันใช้ในสคริปต์ของฉัน
Mr. Mendelli

คำตอบ:


0

ฉันคิดว่าคุณสามารถใช้คำสั่งดังต่อไปนี้

SET IS-PROFILE=NO
FOR %%f IN (*.ini) do SET IS-PROFILE=YES

จากนั้นทดสอบ IS-PROFILE

ตามที่เสนอในความคิดเห็นคุณสามารถทำลายลูปโดยใช้คำสั่งดังต่อไปนี้

SET IS-PROFILE==NO
FOR %%f IN (*.ini) do (
set IS-PROFILE=YES
echo %%f - File containing INI exists
exit /b
)

IF '%IS-PROFILE%'=='NO' (
echo NO File contains INI type 
)       

ฉันได้ทดสอบบนพีซีของฉันบน Windows 10 และใช้งานได้ดี


แทนที่จะวนลูปผ่านไฟล์ทั้งหมดคุณสามารถตั้งค่าตัวแปรและหยุดก่อนหรือข้ามไปยังสถานที่ที่มีสาขา "มีอยู่"
phuclv

ใช่ แต่การทำลาย FOR loop ใน DOS นั้นยุ่งยาก
schlebe

OP ใช้ Windows ไม่ใช่ DOS และใน cmd มีหลายวิธีในการออกจากลูป มันมักจะใช้เพื่อให้ได้ผลลัพธ์แรกในรายการหรือ บรรทัดแรกในไฟล์ข้อความ . กำลังออกจากลูป FOR ในไฟล์แบตช์หรือไม่
phuclv

ฉันสับสนเล็กน้อยเกี่ยวกับไวยากรณ์โดยเฉพาะเมื่อมันมาถึง SET และ do SET. ฉันไม่เข้าใจคือวิธีนำรหัสของฉันไปทางเดียวหรืออย่างอื่นโดยอ้างอิงจากสิ่งที่พบ
Mr. Mendelli
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.