|
Adaptirano iz news grupe "alt.msdos.batch". Dodate verzije za MS DOS, Windows 9x i 4DOS.
testdir.bat
@echo off
if not exist "%~1" echo %1 ne postoji & pause & exit
dir "%1" /b /a:d /-p >nul 2>&1
if errorlevel 1 (
echo file
) else (
echo folder
)
pause
Testirano:
Windows 2000, Windows XP
Reference:
Echo
[Link mogu videti samo ulogovani korisnici]
Dir
[Link mogu videti samo ulogovani korisnici]
Pause
[Link mogu videti samo ulogovani korisnici]
if
[Link mogu videti samo ulogovani korisnici]
Using batch parameters
[Link mogu videti samo ulogovani korisnici]
Using command redirection operators
[Link mogu videti samo ulogovani korisnici]
Modifikacija za MS DOS i Windows 9x
( testirano na MS DOS-u 6.22, Windowsu 95 i Windows 98 )
testd9x.bat
@echo off
dir /b /a:d /-p | find /i "%1" >nul
if ERRORLEVEL 1 goto FILE
goto FOLDER
:FILE
if not exist %1 goto NEPOSTOJI
echo file
goto EOF
:FOLDER
echo folder
goto EOF
:NEPOSTOJI
echo %1 ne postoji.
:EOF
Zašto ovako?
"if exist" u MS DOSu testira samo za fajlove, ne i za direktorijume. Dir ne vraća "errorlevel". Kada se navede direktorijum, dir prikazuje sadržaj direktorijuma. IF u MS DOSu i Win 9x ne podržava else klauzulu. U Windowsu 9x IF EXIST test ne radi na dugim imenima fajlova čak ni kada se promenljive okruže navodnicima.
4DOS verzija
4DOS je alternativni DOS shell za MS DOS/Win9x (NT verzija se zvala 4NT, trenutno aktuelna verzija za novije Windowse se zove TakeCommand). 4DOS poseduje mnoga proširenja u odnosu na DOS/Windows batch jezik uključujući već ugrađenu komandu za proveru da li je u pitanju direktorijum. 4DOS podržava i LFN pod Windowsima 9x.
test4dos.btm
@echo off
iff isdir "%1" then echo folder
elseiff exist "%1" then echo file
else echo "%1" ne postoji
endiff
|