Saya ingin menerjemahkan skrip Linux / Bash ini ke shell Windows:
if test -d myDirName; then echo "ok"; else mkdir myDirName; fi
Ini menguji apakah direktori ada, dan jika tidak menciptakannya.
windows-7
command-line
batch-file
Pietro
sumber
sumber
mkdir -p myDirName
. Setelah menghabiskan berhari-hari mencoba menerjemahkan bash-script yang relatif sederhana ke dalam batch-sh * t (menugaskan hasil fungsi ke variabel?), Saya memutuskan untuk membuat orang menginstal cygwin.Jawaban:
Ditambahkan oleh Barlop
Sementara hal di atas berfungsi untuk situasi khusus ini, judulnya mengatakan tentang pengujian khusus untuk direktori. Komentar Phogg menggunakan
if exist mydirname\
bukanif exist mydirname
caranya. Beberapa jawaban telah menggunakan \ nul tetapi \ nul bermasalah di NT. Tidak termasuk garis miring terbalik akan menguji file atau direktori. Jadi, untuk direktori, sertakan trailing backslash.sumber
if exist mydirname\
dan sisanya seperti yang Anda katakan. Sebagai alternatif, Anda sebenarnya bisa mendapatkantest
biner dan menggunakannya di Windows.mkdir
bisa.if not 1==1 echo hmm
atau jika ada myDirName \ ELSE blahblahblahInilah yang baru saya ketahui:
Anda dapat menguji apakah ada file nul; jika direktori itu ada akan berisi file nul, jika file nul tidak ada maka direktori tidak ada.
sumber
if exist dirname
yang tampaknya khusus untuk Windows NT.\nul
, tidak perlu di Windows NT lagi, polosif exist "C:\Program Files (x86)"
harus bekerja (kecuali Anda masih menargetkan Windows 98 ...)Gunakan backslash, bukan forward slash:
myDirName\nul
notmyDirName/nul
- foo adalah direktori
- bar adalah file
- xyz tidak ada
sunting: ini hanya berfungsi jika nama direktori tidak mengandung spasi
sumber
Beberapa menyarankan melakukan \ nul, tetapi itu tampaknya tidak bekerja dengan baik di NT
http://www.dostips.com/forum/viewtopic.php?f=3&t=4913
Kembali pertanyaannya
sumber
Saya bertanya-tanya mengapa joe memiliki downvote karena saya mengalami masalah yang sama pada Windows 7, yaitu itu
JIKA ADA nama file \ NUL
mengembalikan TRUE untuk file dan direktori. Saya menemukan solusi alternatif di www.robvanderwoude.com/battech_ifexistfolder.php dan muncul dengan versi revisi dari loop FOR DVF:
sumber
Saya melihat banyak masalah dengan membedakan antara file dan folder. Adakah yang mencoba untuk melakukan cd ke dalamnya setelah memeriksanya? Maka cd akan berhasil atau gagal.
sumber
MyDir
setelah baris pertama seharusnya%MyDir%
. (2) Thecd ..
tidak akan melakukan apa yang Anda inginkan jika%MyDir%
pathname multi-level (misalnya,Pictures\cats
) atau bahkan pathname absolut (misalnya,\Windows
). Pertimbangkan untuk menggunakanpushd
/popd
dan / atausetlocal
.juga benar jika myDirName adalah file, bukan fungsi yang dicari
sumber
C:\blah>touch abe<ENTER>C:\blah>if exist abe\nul echo err<ENTER> C:\blah>if exist abe/nul echo err<ENTER>C:\blah>
Saya bukan penggemar NT di NT tetapi tidak. Anda seharusnya memberikan beberapa output.Menemukan folder seharusnya tidak sesulit ini. Solusi saya, gunakan perl:
sumber