मैं MS-DOS पर काम करता था एक फ़ोल्डर के लिए if exist path\nul
परीक्षण पता है। मुझे नहीं पता कि यह लंबे फ़ाइल नामों के परिचय के साथ टूट गया था या नहीं।
मुझे पता था कि if exist "long path\nul"
विंडोज बैच पर काम नहीं करता है। मुझे आज तक एहसास नहीं हुआ कि if exist path\nul
विस्टा पर काम करता है और जब तक पथ कम 8.3 रूप में होता है।
मूल कोड Vista पर काम करने के लिए प्रतीत होता है। ऐसा लगता है कि इसे XP पर भी काम करना चाहिए, लेकिन मेरा मानना है कि निम्न XP बग रास्ते में हो रहा है: Batch parameter %~s1 gives incorrect 8.3 short name।
मूल कोड पाश के लिए की जरूरत नहीं है, यह बस %~s1
इस्तेमाल कर सकते हैं यहाँ एक भिन्नता है कि पूरी तरह से अवैध, फ़ाइल या फ़ोल्डर के रूप में एक पथ में वर्गीकृत किया है। यह Vista पर काम करता है, लेकिन %~s1
बग के कारण XP पर काम नहीं करता है। मुझे यकीन नहीं है कि यह एमएस-डॉस पर कैसे प्रदर्शन करता है।
संपादित करें 2015/12/08: विंडोज स्थितियों की एक संख्या है, जहां यह विफल रहता है
@echo off
if not exist "%~1" (set "type=INVALID") else if exist %~s1\nul (set "type=FOLDER") else (set "type=FILE")
@echo "%~1" = %type%
मेरा मानना है कि इस बदलाव MS-DOS और XP सहित माइक्रोसॉफ्ट बैच के लगभग सभी संस्करणों के साथ काम करेंगे रहे हैं ।
@echo off
if exist "%~1" (2>nul pushd "%~1" && (popd&set "type=FOLDER") || set "type=FILE") else set "type=INVALID"
echo "%~1" = %type%
अद्यतन (यह स्पष्ट रूप से है कि PUSHD का समर्थन नहीं करते डॉस के प्रारंभिक संस्करणों पर काम नहीं करेगा) 2014-12-26
मैं यकीन है कि निम्नलिखित सभी संस्करणों पर काम करेंगे हूँ विंडोज़ के एक्सपी से आगे, लेकिन मैंने केवल विन 7 पर परीक्षण किया है।
संपादित करें 2015/12/08: इस नेटवर्क ड्राइव पर असफल हो सकता है क्योंकि फ़ोल्डर परीक्षण झूठा एक फ़ोल्डर
@echo off
if exist %1\ (
echo %1 is a folder
) else if exist %1 (
echo %1 is a file
) else (
echo %1 does not exist
)
अद्यतन 2015-12-08
के रूप में एक फ़ाइल रिपोर्ट कर सकते हैं अंत में - एक परीक्षण जो वास्तव में XP ड्राइव से किसी भी विंडोज संस्करण पर काम करना चाहिए, जिसमें नेटवर्क ड्राइव और यूएनसी पथ
for /f "tokens=1,2 delims=d" %%A in ("-%~a1") do if "%%B" neq "" (
echo %1 is a folder
) else if "%%A" neq "-" (
echo %1 is a file
) else (
echo %1 does not exist
)
वास्तव में आपका प्रश्न है एमएस-डॉस के बारे में, या विंडोज़ में कमांड प्रॉम्प्ट के बारे में? और कौन सा संस्करण? – wimh
मेरा परीक्षण वातावरण विंडोज 7 x64 और विंडोज एक्सपी दोनों हैं, मैंने अन्य प्लेटफार्मों पर कोशिश नहीं की। धन्यवाद। – aaron