Dossini ei ole toiminut sen jälkeen, kun tein erään testin komentojonotiedostolla. Kun komentojonotiedostoon laittaa esimerkiksi seuraavan rivin:
chkdsk
...ohjelma tulostaa näytölle peräkkäin tekstin "chkdsk". Sama koskee myös kaikkia muita komentoja. Ohjelma ei myöskään chkdsk:ta suoritettaessa kysele normaalisti mitään, joten siitäkään se ei voi johtua.
Mitä testini aikana oikein tapahtui? Testitiedostoni lähdekoodi oli testin aikana seuraavanlainen:
@echo off title Automaattinen virheidenkorjaus echo Tarkistetaan levyä virheistä.... chkdsk > data\tiedot.dat echo Tarkistus suoritettu loppuun! if errorlevel 255 echo Tarkistus epäonnistui! pause
Mikä tuossa tiedostossa (ehkä) vaurioitti järjestelmää??
Ei tuon kyllä pitäisi vaurioittaa mitenkään DOSsin toimintaa ellei chkdsk.exe filusi ole ollut jotenkin buginen. (imo)
Mutta kyllä se on ennen ainakin toiminut.
Eli pistit chkdsk:n tarkistamaan "data" kansiossa olevan "tiedot.dat" tiedoston? Ja mitäkö siellä tiedot.dat:ssa sitten oikeastaan onkaan? Utelias kun olen, niin kiinnostaa myös se, että mistä chkdsk:si tietää mikä on errorlevel 255?
Kyllä tuo laittaa chkdsk.exe:n tulostamaan ruudun sijaan tulokset tuohon tiedot.dat tiedostoon.
Ja tuo 'if errorlevel 255' on se, että tarkistus epäonnistuu. Jos errorlevel on 0, vai oliko se nyt 1, niin tarkistus onnistui. Niin olen ainakin saanut tietooni.
EDIT: Tuo on kerran toiminut, mutta sen jälkeen ei enää kertaakaan. Outoo.
Jos errorlevel = 0 niin homma bueno. Eli 0 = ei virheitä ;)
Koetin tuota juttuasi vanhalla dos läppärillä ja lopputulos oli juuri mitä arvelinkin eli ei tuo ohjelma tuota ongelmia. Jos tuon takia on jotain mennyt rikki tai seonnut niin vika on sitten chkdsk.exe filussa. Tosin en oikein tuohonkaan ratkaisuun usko.
Vieläkö sinulla on tämä ongelma?
Jep. Ja se koskee lähes kaikkia DOS-komentoja.
Huh. Eli vika ei siis ole tuossa tiedostossa. Sitten jotain muuta on mennyt pieleen.
EDIT:
No nyt toimii yhdellä tavalla:
@echo off title Automaattinen virheidenkorjaus echo Tarkistetaan levyä virheistä.... %SystemRoot%\system32\chkdsk.exe > data\tiedot.dat echo Tarkistus suoritettu loppuun! if errorlevel 255 echo Tarkistus epäonnistui! pause
Mitä ihmettä. Tuolla koodilla siis se toimii, mutta ei pelkällä chkdsk-komennolla.
Eli sulla on PATH-ympäristömuuttuja rikki. Kliksuttele Control Panel > System > Joku välilehti, josta löytyy Environment variables -nappi > se nappi > Ota listasta PATH ja lisää siihen ainakin C:\Windows ja C:\Windows\System32
Siellä on jo ne. Muuttujan arvo on tämä:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
EDIT: En ees muuttanut mitään, mutta nyt DOS silti toimii. Nyt kun laittaa chkdsk, niin chkdsk.exe käynnistyy!
Aihe on jo aika vanha, joten et voi enää vastata siihen.