Memeriksa apakah ada folder menggunakan file .bat [ditutup]


160

Saya ingin dapat memeriksa apakah folder tertentu (FolderA) ada dan jika demikian, untuk pesan yang akan ditampilkan dan kemudian file batch yang akan keluar.

Jika FolderA tidak ada, saya kemudian ingin memeriksa apakah folder lain (FolderB) ada. Jika FolderB tidak ada, pesan harus ditampilkan dan folder harus dibuat, dan jika FolderB ada, pesan harus ditampilkan dengan mengatakan demikian.

Adakah yang tahu tentang kode yang bisa saya gunakan pada notepad untuk membuat file batch yang memungkinkan saya melakukan ini?

Semua ini perlu dilakukan dalam satu .batfile.


7
Pencarian google muncul dengan Pengujian jika Drive atau Direktori Ada . Dan ini menjelaskan dengan tepat bagaimana melakukan apa yang Anda minta ...
NealB

2
Pencarian untuk "direktori file batch ada" di sini di SO ditemukan Windows Batch File Cari direktori jika tidak ada buat lalu pindahkan file , yang menunjukkan kepada Anda bagaimana melihat apakah direktori ada atau tidak. Ada posting di sini tentang membuat direktori dari file batch juga. Silakan lakukan riset dasar sebelum memposting pertanyaan baru; kemungkinan bagus pertanyaan telah ditanyakan di sini sebelumnya. Terima kasih.
Ken White

3
Windows batch adalah bahasa pemrograman, periksa apakah file yang ada adalah tugas pemrograman. Muncul di topik.
Audrius Meskauskas

1
Harus ditutup sebagai duplikat dari Cara menguji apakah file adalah direktori dalam skrip batch? bukannya "di luar topik"
Michael Freidgeim

Jawaban:


260

Coba gunakan ini:

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

Ganti yourfilename dengan nama file Anda.

Untuk direktori, lihat https://jeffpar.github.io/kbarchive/kb/065/Q65994/ ini

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

trailing backslash ('\') tampaknya cukup untuk membedakan antara direktori dan file biasa.


2
Bagian kedua dari jawaban Anda tidak lengkap.
tmj

4
if exist "c:\folder\nul" echo oktidak bekerja untuk saya di Windows 7. Yang berhasil adalah if exist "c:\folder\" echo ok.
Alexander Gelbukh

2
@AlexanderGelbukh - Anda benar, if exist "networkPath\nul"dapat secara salah melaporkan file sebagai folder pada drive jaringan Windows. Sayangnya, mereka if exist "networkPath\"mengalami masalah yang sama. Lihat pembaruan 2015-12-08 di stackoverflow.com/a/8669636/1012053 untuk teknik yang dapat diandalkan di semua pengujian saya.
dbenham

@AlexanderGelbukh Ini bekerja tanpa tanda kutip. Tentu saja, ini membatasi Anda ketika memiliki ruang di jalur direktori.
Marc.2377

1
Ya, tanpa tanda kutip itu berfungsi. Namun, dengan kutipan itu tidak berfungsi bahkan untuk drive lokal: if exist c:\Windows\nul echo okmengatakan ok, tetapi if exist "c:\Windows\nul" echo oktidak mengatakan apa-apa. Seperti yang saya katakan, sementara if exist "c:\Program Files\nul" echo oktidak mengatakan apa-apa, if exist "c:\Program Files\" echo okmengatakan okdan dengan demikian bekerja bahkan untuk jalur dengan ruang.
Alexander Gelbukh

34

Saya pikir jawabannya ada di sini (mungkin duplikat):

Bagaimana cara menguji apakah file adalah direktori dalam skrip batch?

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

Ganti% VAR% dengan direktori Anda. Harap baca jawaban asli karena menyertakan perincian tentang penanganan spasi putih pada nama folder.

Seperti yang dikatakan foxidrive, ini mungkin tidak dapat diandalkan pada windows kelas NT. Ini bekerja untuk saya, tetapi saya tahu ada beberapa keterbatasan (yang dapat Anda temukan di pertanyaan yang dirujuk)

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

harus cukup untuk windows modern.


6
Teknik \ nul tidak dapat diandalkan di windows kelas NT. Itu baik-baik saja di MSDOS dan Win9x. Solusi di Windows modern cukup if exist "c\:folder\" echo folder exists
foxidrive

1
Saya pikir ini juga ditentukan dalam tautan yang dirujuk.
Cosmin Vană

Masih tidak mengerti mengapa saya downvoted (yang berarti "Tidak berguna"). Saya menambahkan referensi ke pertanyaan di mana jawaban mencakup skenario yang diperlukan.
Cosmin Vană

Tidak berguna bisa karena itu tidak berlaku untuk mesin saat ini, dan jawaban Anda sebelumnya tidak membuat perbedaan. Beberapa orang akan tetap memilih jawaban Anda karena itu tidak menjawab pertanyaan yang diajukan.
foxidrive

2
dari support.microsoft.com/kb/65994 "NUL selalu ada di drive MS-DOS FAT lokal" - seperti padaE:\NUL
CAD bloke
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.