Batch tip: testiranje za direktorijum

Batch tip: testiranje za direktorijum

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12488
  • Gde živiš: Južni pol

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
http://www.microsoft.com/resources/documentation/w...../echo.mspx
Dir
http://technet.microsoft.com/en-us/library/cc773112%28WS.10%29.aspx
Pause
http://www.microsoft.com/resources/documentation/w.....pause.mspx
if
http://www.microsoft.com/resources/documentation/w.....x?mfr=true
Using batch parameters
http://www.microsoft.com/resources/documentation/w.....x?mfr=true
Using command redirection operators
http://www.microsoft.com/resources/documentation/w.....ction.mspx


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



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
Ko je trenutno na forumu
 

Ukupno su 1103 korisnika na forumu :: 58 registrovanih, 6 sakrivenih i 1039 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Acivi, adamantadv, Alibaba1981, Andrija357, babaroga, bagor10, bato, Bobrock1, bojcistv, Bokiboks, Boris90, BSD, darcaud, debeli, djboj, Djokkinen, djordjekec, DonRumataEstorski, Dorcolac, draganv97, DrugiREI, dule10savic, flash12, Gosha101980, ikan, ivan1973, Karla, Kibice, Klecaviks, kobaja77, Kubovac, Lieutenant, Luka1998, mile23, milenko crazy north, Oscar, Panter, Parker, RJ, rovac, S2M, scimitar19, shone34, slonic_tonic, SR-3m, Srle993, stagezin, Tas011, theNedjeljko, Tvrtko I, uros, uruk, vathra, vlad4, Vladko, voja64, vukovi, wizzardone