ตรวจสอบว่ามีโฟลเดอร์อยู่หรือไม่โดยใช้ไฟล์. bat [ปิด]


160

ฉันต้องการตรวจสอบว่ามีบางโฟลเดอร์ (FolderA) อยู่หรือไม่และถ้าเป็นเช่นนั้นจะมีข้อความปรากฏขึ้นจากนั้นจะมีการออกจากแบตช์ไฟล์

หาก FolderA ไม่มีอยู่ฉันต้องการตรวจสอบว่ามีโฟลเดอร์อื่น (FolderB) อยู่หรือไม่ หาก FolderB ไม่มีอยู่ข้อความควรถูกแสดงและควรสร้างโฟลเดอร์และถ้า FolderB ไม่มีอยู่ข้อความนั้นควรจะแสดงขึ้นมา

ใครบ้างมีความคิดเกี่ยวกับโค้ดที่ฉันสามารถใช้บน notepad เพื่อสร้างไฟล์แบตช์เพื่อให้ฉันทำสิ่งนี้ได้บ้าง

ทั้งหมดนี้ต้องทำใน.batไฟล์เดียว


7
google ค้นหาขึ้นมาด้วยการทดสอบถ้าไดรฟ์หรือไดเรกทอรีที่มีอยู่ และนี่จะอธิบายวิธีการทำสิ่งที่คุณขออย่างแน่นอน
NealB

2
การค้นหา "ไดเรกทอรีไฟล์ชุดมีอยู่" ที่นี่บนดังนั้นพบWindows Batch File ค้นหาไดเรกทอรีหากไม่มีอยู่สร้างแล้วย้ายไฟล์ซึ่งจะแสดงวิธีดูว่ามีไดเรกทอรีอยู่หรือไม่ มีโพสต์ที่นี่เกี่ยวกับการสร้างไดเรกทอรีจากชุดไฟล์เช่นกัน โปรดทำวิจัยพื้นฐานก่อนโพสต์คำถามใหม่; โอกาสดีคำถามได้ถูกถามที่นี่ก่อนหน้านี้ ขอบคุณ
Ken White

3
ชุด Windows เป็นภาษาการเขียนโปรแกรมตรวจสอบว่าไฟล์ที่มีอยู่เป็นงานการเขียนโปรแกรม ปรากฏในหัวข้อ
Audrius Meskauskas

คำตอบ:


259

ลองใช้สิ่งนี้:

IF EXIST yourfilename (
echo Yes 
) ELSE (
echo No
)

แทนที่yourfilenameที่มีชื่อของไฟล์ของคุณ

สำหรับไดเรกทอรีดูที่https://jeffpar.github.io/kbarchive/kb/065/Q65994/

C:
IF NOT EXIST C:\WIN\ GOTO NOWINDIR
CD \WIN
:NOWINDIR

เครื่องหมายแบ็กสแลชต่อท้าย ('\') น่าจะเพียงพอที่จะแยกแยะระหว่างไดเรกทอรีและไฟล์ทั่วไป


2
ส่วนที่สองของคำตอบของคุณไม่สมบูรณ์
tmj

4
if exist "c:\folder\nul" echo okไม่ได้ทำงานสำหรับฉันภายใต้ Windows 7 if exist "c:\folder\" echo okอะไรทำงานเป็น
Alexander Gelbukh

2
@AlexanderGelbukh - คุณถูกต้องif exist "networkPath\nul"สามารถรายงานไฟล์เท็จเป็นโฟลเดอร์บนไดรฟ์เครือข่าย Windows น่าเสียดายif exist "networkPath\"ที่ปัญหาเดียวกันเกิดขึ้น ดูการอัปเดต 2015-12-08 ที่stackoverflow.com/a/8669636/1012053สำหรับเทคนิคที่เชื่อถือได้ในการทดสอบทั้งหมดของฉัน
dbenham

@AlexanderGelbukh มันทำงานโดยไม่มีคำพูด แน่นอนว่าสิ่งนี้จะ จำกัด คุณเมื่อมีช่องว่างในเส้นทางไดเรกทอรี
Marc.2377

1
ใช่โดยไม่มีเครื่องหมายคำพูดมันทำงาน อย่างไรก็ตามด้วยเครื่องหมายคำพูดมันใช้งานไม่ได้กับไดรฟ์ในระบบ: if exist c:\Windows\nul echo okพูดว่าokแต่if exist "c:\Windows\nul" echo okไม่ได้พูดอะไร อย่างที่ฉันได้พูดไปแล้วในขณะที่if exist "c:\Program Files\nul" echo okไม่พูดอะไรเลยif exist "c:\Program Files\" echo okพูดokและทำงานได้แม้กระทั่งเส้นทางที่มีช่องว่าง
Alexander Gelbukh

34

ฉันคิดว่าคำตอบอยู่ที่นี่ (อาจซ้ำกัน):

จะทดสอบได้อย่างไรว่าไฟล์เป็นไดเรกทอรีในชุดสคริปต์หรือไม่?

IF EXIST %VAR%\NUL ECHO It's a directory

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

ในฐานะที่เป็น foxidrive กล่าวว่าสิ่งนี้อาจไม่น่าเชื่อถือบนหน้าต่างคลาส NT มันใช้งานได้สำหรับฉัน แต่ฉันรู้ว่ามันมีข้อ จำกัด บางอย่าง (ซึ่งคุณสามารถหาได้ในคำถามที่อ้างอิง)

if exist "c:\folder\" echo folder exists 

ควรจะเพียงพอสำหรับหน้าต่างที่ทันสมัย


6
เทคนิค \ nul ไม่น่าเชื่อถือในหน้าต่างคลาส NT มันใช้ได้ใน MSDOS และ Win9x วิธีแก้ปัญหาใน Windows สมัยใหม่นั้นง่าย ๆ if exist "c\:folder\" echo folder exists
foxidrive

1
ฉันคิดว่านี่ยังระบุไว้ในลิงค์อ้างอิง
Cosmin Vană

ยังไม่เข้าใจเลยว่าทำไมฉันถึงถูกลดระดับลง (ซึ่งหมายถึง "ไม่มีประโยชน์") ฉันเพิ่มการอ้างอิงถึงคำถามที่คำตอบครอบคลุมสถานการณ์ที่ต้องการ
Cosmin Vană

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

2
จากsupport.microsoft.com/kb/65994 "NUL มีอยู่เสมอบนไดรฟ์ FAT แบบ MS-DOS ในเครื่อง" - ดังที่E:\NUL
CAD bloke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.