Code: "Komentoa X ei tunnistettu sisäiseksi tai ulkoiseksi komennoksi, suoritettavaksi ohjelmaksi tai komentojonotiedostoksi." Kone alkoi tuota valittamaan pari päivää sitten, kun koitin käyttää pingiä, ja ongelmaa selvittäessä huomasin, ettei cmd.exe löydä mitään muitakaan system32-ohjelmia. Ohjelmat toimii, jos cmd:ssä menee C:\Windows\system32. PATH muuttuja on tyyppiä REG_EXPAND_SZ ja echo %PATH% tulostaa "C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\WindowsSystem32\WindowsPowerShell\v1.0\;" Millähän sais fixattua tän mystisen ongelman, ettei aina tarvitsisi siirtyä system32-kansioon? Käyttiksenä Win 7 HP Edit: Vika selvisi, lainausmerkit piti poistaa arvon ympäriltä
Pingihän ei taida oletuksena edes kuulua W7 system32-tiedostoihin, mutta tämä taisi olla jo tiedossa? Saa lisättyä ohjelmat ja toiminnot kautta -> muuta windowsin toimintoja. Sama juttu esim. telnetin kanssa.
Ympäristömuuttujat sekaisin. Ei löydä kansiota C:\Windows\system32. Korjausta en osaa sanoa, jos joku "näytä muuttujat" sen kuitenkin näyttää, mutta ei osaa hakea.. W7 on mulle tuntematon. Jos sen "dos" on yhtään alkuperäistä, niin *.bat tiedosto, jossa lukee 'cd C:\Windows\system32.'. Niin kirjoittamalla * ja enter, niin olet cmd:llä (komentokehoite) tossa kansiossa. Ja kun ykskään dos komento tai muu ei ole yksikirjaiminen, niin vapaasti valiten * tilalle saat haluamasi kirjaimen. tai oman "komennon", lol, ftw, jne. Paljonko haluat kirjoitella, tai kuin mojovan komeennon nimen haluat luoda. Kualiluatikko, supikoirankarvareuhka,... p.s. *.bat tiedosto pitää sijoittaa semmoiseen paikkaan josta cmd.exe osaa lueskella.
Tuohan oli jo ensimmäisessä viestissä ratkaistu W7 on mulle tuntematon. set-komennolla näkee voimassaolevat ympäristömuuttujat ja niiden arvot. set-komennolla voi myös muuttaa ympäristömuuttujia tai luoda niitä. set-komennon ohje: Code: Näyttää, asettaa tai poistaa CMD.EXE:n ympäristömuuttujia. SET [muuttuja=[merkkijono]] muuttuja Määrittää ympäristömuuttujan nimen. merkkijono Määrittää muuttujan arvoksi annettavan sarjan merkkejä. SET ilman parametreja näyttää nykyiset ympäristömuuttujat. Jos komentolaajennukset ovat käytössä, SET-komento muuttuu seuraavasti: Jos SET-komennolle annetaan parametrina muuttujan nimi ilman yhtäsuuruus- merkkiä tai arvoa, se näyttää kaikkien muuttujien arvon, joiden nimi alkaa SET-komennolle annetun parametrin merkeillä. Esimerkiksi: SET P näyttää kaikki ympäristömuuttujat, joiden nimi alkaa kirjaimella "P". SET-komento asettaa ERRORLEVEL:n arvoon 1 jos muuttujan arvoa ei löydy nykyisestä ympäristöstä. SET-komento ei salli yhtäsuuruusmerkin (=) käyttöä muuttujassa. SET-komentoon on lisätty kaksi uutta valitsinta: SET /A lauseke SET /P muuttuja=[promptString] /A-valitsin edellyttää, että merkkijono yhtäsuuruusmerkin oikealla puolella on laskettava numeerinen lauseke. Lausekkeen laskenta on melko yksinkertaista. Se tukee seuraavia operaatioita esitettynä alenevassa laskentajärjestyksessä: () - ryhmittely ! ~ - - unaarioperaattorit * / % - aritmeettiset operaattorit + - - aritmeettiset operaattorit << >> - looginen siirto & - bittitason JA ^ - bittitason poissulkeva TAI | - bittitason TAI = *= /= %= += -= - sijoitus &= ^= |= <<= >>= , - lauseke-erotin Jos käytetään loogisia tai modulusoperaattoreita, lauseke tulee sijoittaa lainausmerkkeihin. Lausekkeessa olevia ei-numeerisia merkkijonoja käsitellään ympäristömuuttujina, joiden arvot muunnetaan numeroiksi ennen käyttöä. Jos ympäristömuuttujan nimi on annettu mutta ei määritetty nykyisessä ympäristössä, arvoa nolla käytetään. Tämä mahdollistaa aritmeettiset operaatiot ympäristömuuttujien arvoilla tarvitsematta käyttää %-merkkejä niiden arvojen hakemiseen. Jos SET /A suoritetaan komentokehotteesta komentojonotiedoston ulkopuolella, se näyttää lausekkeen lopullisen arvon. Sijoitusoperaattori edellyttää ympäristömuuttujan nimeä sijoitusoperaattorin vasemmalle puolelle. Numeeriset arvot ovat oletuksena desimaalilukuja, ellei niitä edellä 0x (heksadesimaali) tai 0 (oktaali). Täten 0x12 on sama kuin 18, joka on sama kuin 022. Huomaa, että oktaalinotaatio voi aiheuttaa sekaannusta: 08 ja 09 eivät ole kelvollisia lukuja, koska 8 ja 9 eivät ole kelvollisia oktaalinumeroita. /P-valitsimen avulla voit määrittää muuttujan, jonka käyttäjä kirjoittaa komentoriville. Käyttäjälle näytetään kehotemerkkijono ennen muuttujan kirjoittamista. Kehotemerkkijono voi olla tyhjä. Ympäristömuuttujan korvaamista on parannettu seuraavasti: %PATH:mjono1=mjono2% laajentaa PATH-ympäristömuuttujan korvaten jokaisen mjono1-esiintymän mjono2-esiintymän laajennetulla tuloksella. Mjono2 voi olla tyhjä, jolloin se poistaa kaikki mjono1-esiintymät laajennetusta tulostuksesta. Mjono1 voi alkaa tähtimerkillä, jolloin se vastaa kaikkea laajennetun tulostuksen alusta lähtien ensimmäiseen mjono1:n loppuosan esiintymään saakka. Laajennukselle voidaan määrittää myös alimerkkijonoja. %PATH:~10,5% laajentaa PATH-ympäristömuuttujan, mutta käyttää sitten vain 5 merkkiä, jotka alkavat laajennetun tuloksen 11. merkistä (osoite 10). Jos pituutta ei määritetä, niin oletusarvo on muuttujan arvon jäljellä oleva osa. Jos jompikumpi luvuista (osoite tai pituus) on negatiivinen, käytettävä luku on ympäristömuuttujan pituus lisättynä määritetyn osoitteen tai pituuden arvolla. %PATH:~-10% purkaa PATH-muuttujan viimeiset 10 merkkiä. %PATH:~0,-2% purkaa kaikki paitsi kaksi viimeistä PATH-muuttujan merkkiä. Viivästetty ympäristömuuttujalaajennus on lisätty. Tämä on oletusarvoisesti aina poissa käytöstä, mutta voit ottaa sen käyttöön tai poistaa sen käytöstä Cmd.exe-ohjelman /V-valitsimen avulla. Katso CMD /? Viivästetyn ympäristömuuttujalaajennuksen avulla voidaan kiertää nykyisen laajennuksen rajoitukset, jotka aiheutuvat siitä, että laajennus tapahtuu tekstiriviä luettaessa eikä riviä suoritettaessa. Seuraava esimerkki esittelee ongelman: set VAR=ennen if "%VAR%" == "ennen" ( set VAR=jälkeen; if "%VAR%" == "jälkeen" @echo Jos näet tämän, se toimii ) ei tuo näyttöön koskaan sanomaa, koska BOTH IF -käskyn %VAR% korvataan, kun ensimmäinen IF-käsky luetaan, koska se sisältää loogisesti IF-käskyn perusosan, joka on yhdistelmälause. Joten IF-käsky yhdistelmälauseen sisällä vertailee todellisuudessa ennen- ja jälkeen-merkkijonoja, jotka eivät koskaan vastaa toisiaan. Samoin seuraavakaan esimerkki ei toimi odotetulla tavalla: set LIST= for %i in (*) do set LIST=%LIST% %i echo %LIST% Esimerkki ei muodosta tiedostojen luetteloa nykyiseen kansioon, vaan se määrittää LIST-muuttujan viimeiseen löydettyyn tiedostoon. Tämä johtuu taas siitä, että %LIST% laajennetaan vain kerran, kun FOR-käsky luetaan, jolloin LIST-muuttuja on tyhjä. Joten todellinen suoritettava FOR-silmukka on: for %i in (*) do set LIST= %i , joka vain määrittää LIST-muuttujan viimeiselle löydetylle tiedostolle. Viivästetyn ympäristömuuttujalaajennuksen avulla voit käyttää eri merkkiä (huutomerkki) ympäristömuuttujien laajentamiseen suorituksen aikana. Jos viivästetty ympäristömuuttujalaajennus on käytössä, yllä oleva voidaan kirjoittaa seuraavasti: set VAR=ennen if "%VAR%" == "ennen" ( set VAR=jälkeen if "!VAR!" == "jälkeen" @echo Jos näet tämän, se toimii oikein ) set LIST= for %i in (*) do set LIST=!LIST! %i echo %LIST% Jos komentolaajennukset ovat käytössä, tällöin käytössä on useita dynaamisia ympäristömuuttujia, jotka voidaan laajentaa mutta jotka eivät näy SET- komennon näyttämässä muuttujien luettelossa. Nämä muuttuja-arvot lasketaan dynaamisesti joka kerta, kun muuttuja laajennetaan. Jos käyttäjä määrittää täsmällisesti muuttujan käyttäen jotain näistä nimistä, määritys korvaa alla kuvatut dynaamiset määritykset: %CD% - Laajentaa nykyisen hakemistomerkkijonon. %DATE% - Laajentaa nykyisen päivämäärän käyttämällä DATE-komennon muotoa. %TIME% - Laajentaa nykyisen ajan käyttämällä TIME-komennon muotoa. %RANDOM% - Laajentaa satunnaisen desimaaliluvun 0 - 32767. %ERRORLEVEL% - Laajentaa nykyisen ERRORLEVEL-arvon. %CMDEXTVERSION% - Laajentaa nykyisen komentotulkin laajennusten versionumeron. %CMDCMDLINE% - Laajentaa alkuperäisen komentorivin, joka käynnisti komentotulkin. %HIGHESTNUMANODENUMBER% - Laajentaa tämän tietokoneen suurimman NUMA-solmun numeron.