skripti

Pitäisi saada tehtyä skripti joka testaa onko työasema online-tilassa vai ei ja ilmottaisi sen sitten. Onko tällainen mahdollista tehdä ihan perus "windows/dos"-skriptinä?
361077
Äänestä

Muut lukivat myös

Vastaukset 36

Vanhimmat

net view | find /c "\\Työasema"
Tuo tulostaa 1, jos työasema löytyy.
net view | find "\\Työasema"
tai
net view | find "tietokoneen kuvaus"
Tämä tulostaa rivin, jolla on työaseman nimi ja tietokoneen kuvaus

Noista voisi jotain kehitellä.

Äänestä
  • Kiitos paljon! Mikähän mahtaa olla että nämä määritykset eivät tuota oikeanlaista tulosta antamasi rivin kanssa?

    net view | find /c "\\KONE1"
    if ERRORLEVEL=1 echo Työasema löytyy verkosta
    if ERRORLEVEL=0 echo Työasema ei ole kytkettynä verkkoon

    Nyt kyseiset rivit tulostavat molemmat tekstit, jos työasema ei ole verkossa. Ja jos työasema on verkossa tuo tulostaa että työasema ei ole kytkettynä verkkoon. Missä tuo menee metsään?

    Äänestä

  • skriptooja kirjoitti:

    Kiitos paljon! Mikähän mahtaa olla että nämä määritykset eivät tuota oikeanlaista tulosta antamasi rivin kanssa?

    net view | find /c "\\KONE1"
    if ERRORLEVEL=1 echo Työasema löytyy verkosta
    if ERRORLEVEL=0 echo Työasema ei ole kytkettynä verkkoon

    Nyt kyseiset rivit tulostavat molemmat tekstit, jos työasema ei ole verkossa. Ja jos työasema on verkossa tuo tulostaa että työasema ei ole kytkettynä verkkoon. Missä tuo menee metsään?

    tuloksen mukaan, vaan tulostaa rivien määrän.

    Pitäisi testata jollain sen tulostus.

    Äänestä

  • skriptooja kirjoitti:

    Kiitos paljon! Mikähän mahtaa olla että nämä määritykset eivät tuota oikeanlaista tulosta antamasi rivin kanssa?

    net view | find /c "\\KONE1"
    if ERRORLEVEL=1 echo Työasema löytyy verkosta
    if ERRORLEVEL=0 echo Työasema ei ole kytkettynä verkkoon

    Nyt kyseiset rivit tulostavat molemmat tekstit, jos työasema ei ole verkossa. Ja jos työasema on verkossa tuo tulostaa että työasema ei ole kytkettynä verkkoon. Missä tuo menee metsään?

    @echo off
    ping 192.168.0.1 -n 1 | find /i "ttl=" > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"

    Äänestä

  • juhakorkeapudas kirjoitti:

    @echo off
    ping 192.168.0.1 -n 1 | find /i "ttl=" > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"

    vaihtoehtoisesti:

    @echo off
    net view | find /c "\\KONE1" > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"

    Kiitos ratkaisusta!

    Äänestä

  • myös net view komennolle kirjoitti:

    vaihtoehtoisesti:

    @echo off
    net view | find /c "\\KONE1" > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"

    Kiitos ratkaisusta!

    pitääpä miettiä miksi.

    Äänestä

  • mutta toimii senkin kanssa kirjoitti:

    pitääpä miettiä miksi.

    c-parametri vain listaa niiden rivien lukumäärän joilla haettava merkkijono esiintyy.

    Äänestä

  • juhakorkeapudas kirjoitti:

    c-parametri vain listaa niiden rivien lukumäärän joilla haettava merkkijono esiintyy.

    Kun /C valitsin tulostaa 0:n NUL:iin, niin se aiheuttaa ErrorLevel=1
    ja kun se tulostaa esim. 1:n, niin se aihettaa ErrorLevel=0 tai siis ei aiheta virhettä.

    Kokeilin samaa tulostamalla tekstitiedostoon
    net view | find /c "\\KONE1" > tulostus.txt
    ja laitoin rivin
    del tulostus.txt
    viimeiselle riville. Toimi samalla tavalla.

    Tuo on tietysti suunniteltu ominaisuus, mutta sitä ei arvaamalla taitaisi keksiä.
    Ainoastaan kokeilemalla vahingossa tai sitten opiskelemalla.

    Äänestä

  • errorlevel arvo kirjoitti:

    Kun /C valitsin tulostaa 0:n NUL:iin, niin se aiheuttaa ErrorLevel=1
    ja kun se tulostaa esim. 1:n, niin se aihettaa ErrorLevel=0 tai siis ei aiheta virhettä.

    Kokeilin samaa tulostamalla tekstitiedostoon
    net view | find /c "\\KONE1" > tulostus.txt
    ja laitoin rivin
    del tulostus.txt
    viimeiselle riville. Toimi samalla tavalla.

    Tuo on tietysti suunniteltu ominaisuus, mutta sitä ei arvaamalla taitaisi keksiä.
    Ainoastaan kokeilemalla vahingossa tai sitten opiskelemalla.

    sehän tulostaa sinne sen rivin, minkä se tulostaa näytölle ilman c-valitsinta, eikä sitä nollaa tai muuta numeroa.
    Numero tulostetaan vain näytölle (tai stdout ?).

    Minä luulin sen tulostavan tiedostoon saman kuin näytölle. Mutta se tulostaankin tiedostoon aina rivin.

    Äänestä

  • mä ymmärsinkin väärin kirjoitti:

    sehän tulostaa sinne sen rivin, minkä se tulostaa näytölle ilman c-valitsinta, eikä sitä nollaa tai muuta numeroa.
    Numero tulostetaan vain näytölle (tai stdout ?).

    Minä luulin sen tulostavan tiedostoon saman kuin näytölle. Mutta se tulostaankin tiedostoon aina rivin.

    Kiitos paljon viesteistä nyt tuo toimii kuin junan vessa.

    Nyt olisi vielä tarpeen skriptiin sellainen ominaisuus/looppi, mikä lukisi toisesta tiedostosta tietokoneen nimen.

    tiedostossa eri kentät on erotettu pilkuilla.
    esim.

    tietokone1, konesalissa, blah
    tietokone2, neuvotteluhuone, blahblah

    Saisinko jotenkin helposti loopilla siis niin että tuohon aikaisempaan skriptiin otettaisiin aina tuo tietokoneen nimi tuosta ekasta kentästä. ja käytäisiin kaikki rivit läpi kunnes tiedostosta loppuvat rivit.

    Lisäksi pitäisi saada aina ennen tuota testausta että onko kone online vai offline, tulostettua tuo koko rivi kaikkine kenttineen.

    Tiedän että FOR-komento on olemassa, mutta ei ole juuri mitään hajua että miten tällainen skripti toteutettaisiin...

    Äänestä

  • skriptooja kirjoitti:

    Kiitos paljon viesteistä nyt tuo toimii kuin junan vessa.

    Nyt olisi vielä tarpeen skriptiin sellainen ominaisuus/looppi, mikä lukisi toisesta tiedostosta tietokoneen nimen.

    tiedostossa eri kentät on erotettu pilkuilla.
    esim.

    tietokone1, konesalissa, blah
    tietokone2, neuvotteluhuone, blahblah

    Saisinko jotenkin helposti loopilla siis niin että tuohon aikaisempaan skriptiin otettaisiin aina tuo tietokoneen nimi tuosta ekasta kentästä. ja käytäisiin kaikki rivit läpi kunnes tiedostosta loppuvat rivit.

    Lisäksi pitäisi saada aina ennen tuota testausta että onko kone online vai offline, tulostettua tuo koko rivi kaikkine kenttineen.

    Tiedän että FOR-komento on olemassa, mutta ei ole juuri mitään hajua että miten tällainen skripti toteutettaisiin...

    Muuten tämä nyt toimii, mutta tuo find-komennossa oleva polku-niminen muuttuja ei toimi. Miten se pitäisi laittaa, että siihen tulostuisi tuo koneeen nimi? Kiitos jälleen kerran.

    @echo off
    FOR /F "tokens=1,3* delims=," %%G IN (myfile.csv) DO (
    echo %%G %%H
    set polku=\\%%G%
    net view | find /c "%%polku" > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"
    )
    pause

    Äänestä

  • skriptooja kirjoitti:

    Muuten tämä nyt toimii, mutta tuo find-komennossa oleva polku-niminen muuttuja ei toimi. Miten se pitäisi laittaa, että siihen tulostuisi tuo koneeen nimi? Kiitos jälleen kerran.

    @echo off
    FOR /F "tokens=1,3* delims=," %%G IN (myfile.csv) DO (
    echo %%G %%H
    set polku=\\%%G%
    net view | find /c "%%polku" > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"
    )
    pause

    tulkitaan yleensa kirjaimellisesti eli "%%polku" tarkoittaisi %%polku eikä muuttujan arvoa (sisältöä).

    Kokeile ilman sitaatteja.
    Sitten voisi kokeilla siirtää apumuuttujalle, jollei toimi suoraan.

    Mulla on kohta 25 vuotta kun olen viimeksi yrittänyt tosissani vääntää mitään koodia (en tunne termejä, joten termi "koodia" saattoi olla väärin).
    Siksi ohje on vain suuntaa antava.

    Äänestä

  • sisällä kirjoitti:

    tulkitaan yleensa kirjaimellisesti eli "%%polku" tarkoittaisi %%polku eikä muuttujan arvoa (sisältöä).

    Kokeile ilman sitaatteja.
    Sitten voisi kokeilla siirtää apumuuttujalle, jollei toimi suoraan.

    Mulla on kohta 25 vuotta kun olen viimeksi yrittänyt tosissani vääntää mitään koodia (en tunne termejä, joten termi "koodia" saattoi olla väärin).
    Siksi ohje on vain suuntaa antava.

    Normaalikielessä sitaatit tarkoittavat, että ei pidä ottaa kirjaimellisesti.

    Mielenkiintoinen seikka, mistä johtuu.


    Linuxin bash komentokielessä:
    - yksinkertainen lainausmerkki (')vastaa kait sitaattia " Windows/DOS:ssa
    - kaksin kertaisissa lainausmerkeissa (") tulkitaan ympäristömuuttujat
    - Hipsumerkkien (` [plusmerkin vieressä SHIFT:n kanssa]) sisältä lasketaan esim. ohjeman antama arvo

    Eli linxin komentorillä olisi ympäristömuuttuja tulkittu?
    Entä sitte MS:n uusi komentorivi (Saatavilla Vistaan?)?

    Äänestä

  • sisällä kirjoitti:

    tulkitaan yleensa kirjaimellisesti eli "%%polku" tarkoittaisi %%polku eikä muuttujan arvoa (sisältöä).

    Kokeile ilman sitaatteja.
    Sitten voisi kokeilla siirtää apumuuttujalle, jollei toimi suoraan.

    Mulla on kohta 25 vuotta kun olen viimeksi yrittänyt tosissani vääntää mitään koodia (en tunne termejä, joten termi "koodia" saattoi olla väärin).
    Siksi ohje on vain suuntaa antava.

    Näin kokeilin nyt ja SET-komento näyttää että polku-muuttuja saa todella arvokseen merkkijonon: "\\%%G%" , missä &&G% tilalle tulostuu tietokoneen nimi. Tuohon find-komentoon kokeilin eritavoin laittaa tuon polku-muuttujan mutta ei auttanut. Jos laitan %%polku% tulostuu find-komentoon %polku, jos laitan %%polku tulostuu myös tällöin find-komentoon %polku, muuttujan sisältämän arvon sijasta.
    Jos laitan %polku tulostuu find-komentoon polku.

    Miten saisin tuon toimimaan niin että siihen tulostuisi muuttujan sisältö eikä itse muuttujan nimi?

    rem @echo off
    FOR /F "tokens=1,3* delims=," %%G IN (myfile.csv) DO (
    echo %%G %%H
    set polku="\\%%G%"
    set polku
    net view | find /c %%polku > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"
    )
    pause

    Äänestä

  • skriptooja kirjoitti:

    Näin kokeilin nyt ja SET-komento näyttää että polku-muuttuja saa todella arvokseen merkkijonon: "\\%%G%" , missä &&G% tilalle tulostuu tietokoneen nimi. Tuohon find-komentoon kokeilin eritavoin laittaa tuon polku-muuttujan mutta ei auttanut. Jos laitan %%polku% tulostuu find-komentoon %polku, jos laitan %%polku tulostuu myös tällöin find-komentoon %polku, muuttujan sisältämän arvon sijasta.
    Jos laitan %polku tulostuu find-komentoon polku.

    Miten saisin tuon toimimaan niin että siihen tulostuisi muuttujan sisältö eikä itse muuttujan nimi?

    rem @echo off
    FOR /F "tokens=1,3* delims=," %%G IN (myfile.csv) DO (
    echo %%G %%H
    set polku="\\%%G%"
    set polku
    net view | find /c %%polku > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"
    )
    pause

    prosenttimerkkien sisällä, kun sen arvoa haetaan

    net view | find /c %polku% > nul

    http://www.computerhope.com/sethlp.htm
    http://www.robvanderwoude.com/set.html

    %%muuttuja on taas for silmukkamuuttuja
    http://www.robvanderwoude.com/for.html

    Äänestä


  • skriptooja kirjoitti:

    %polku% tulostaa vain tyhjän tuohon find-komentoon vaikka set:llä näkee, että polku-muuttujassa todella on sisältöä... Lisää ideoita?

    net view | find "%polku%" > nul
    minulla se vaan tulosti (rem @echo off) rivin
    net view | find "KONE1" 1>nul
    (/c otin pois, sitä ei kai tarvitse)
    ja jumitti tuohon. Joku ykkönen sinne tunkee.

    Äänestä

  • "%polku%" kirjoitti:

    net view | find "%polku%" > nul
    minulla se vaan tulosti (rem @echo off) rivin
    net view | find "KONE1" 1>nul
    (/c otin pois, sitä ei kai tarvitse)
    ja jumitti tuohon. Joku ykkönen sinne tunkee.

    tulosta net view komennolla teksititiedostoon

    net view > netview.txt

    ja sitten voit käyttää find hakua tähän tekstitiedostoon. Nopeuttaa suoritusta, kun riittää yksi skannaus kaikille koneille.

    for silmukka
    find "%polku%" netview.txt > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"

    Äänestä

  • korjausehdotus kirjoitti:

    tulosta net view komennolla teksititiedostoon

    net view > netview.txt

    ja sitten voit käyttää find hakua tähän tekstitiedostoon. Nopeuttaa suoritusta, kun riittää yksi skannaus kaikille koneille.

    for silmukka
    find "%polku%" netview.txt > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"

    koska find tulostaa tiedostosta aina sen nimen (isoilla kirjaimilla) ensimmäiselle riville, vaikka ei löytyisikään yhtään osumaa, niin se pitää suodattaa pois

    for silmukka
    find /v "NETVIEW.TXT" netview.txt | find "%polku%"
    if %ErrorLevel%==0 echo "Online"
    ...

    Äänestä

  • otsikon poistamiseksi kirjoitti:

    koska find tulostaa tiedostosta aina sen nimen (isoilla kirjaimilla) ensimmäiselle riville, vaikka ei löytyisikään yhtään osumaa, niin se pitää suodattaa pois

    for silmukka
    find /v "NETVIEW.TXT" netview.txt | find "%polku%"
    if %ErrorLevel%==0 echo "Online"
    ...

    for silmukka
    find /v "NETVIEW.TXT" netview.txt | find "%polku%" > nul
    if %ErrorLevel%==0 echo "Online"
    ...

    Äänestä

  • otsikon poistamiseksi kirjoitti:

    koska find tulostaa tiedostosta aina sen nimen (isoilla kirjaimilla) ensimmäiselle riville, vaikka ei löytyisikään yhtään osumaa, niin se pitää suodattaa pois

    for silmukka
    find /v "NETVIEW.TXT" netview.txt | find "%polku%"
    if %ErrorLevel%==0 echo "Online"
    ...

    Vieläkin sama ongelma.. tuonne findin "hipsujen" väliin ei tulostu mitään vaikka siellä on %polku%
    ja pitäisi tulostua tuo koneen nimi. Mistä voisi johtua?

    eli näin tulostuu:
    find /v "NETVIEW.TXT" netview.txt | find "" 1>nul

    vaikka pitäisi jotenkin näin:
    find /v "NETVIEW.TXT" netview.txt | find "\\KONE1" 1>nul

    Äänestä

Onko sinulla siellä rivi vielä

set polku="\\%%G%"

miksi siinä lopussa on prosentti.
Ota lainausmerkit pois.
Kokeile tätä.
set polku=\\%%G

Mitä näyttää
echo %polku%

Äänestä
  • joo lainausmerkit on tuosta pois. kokeilin myös lopun prosenttimerkin ottaa pois, mutta ei vaikutusta.

    echo %polku% näyttää vain: "Echo käytössä."

    mutta sen sijaan set polku näyttää että muuttujalla olisi arvo tyyliin: \\KONE1

    hmm.. vielä ideoita?

    Äänestä

  • skriptooja kirjoitti:

    joo lainausmerkit on tuosta pois. kokeilin myös lopun prosenttimerkin ottaa pois, mutta ei vaikutusta.

    echo %polku% näyttää vain: "Echo käytössä."

    mutta sen sijaan set polku näyttää että muuttujalla olisi arvo tyyliin: \\KONE1

    hmm.. vielä ideoita?

    "Echo käytössä" tai "Echo ei käytössä" ilmoitus tulee ajettaessa komentojonotiedostoa, kun on kirjoitettu sellainen muuttuja prosenttimerkkien sisään, jota ei ole (esimerkiksi kirjoitusvirhe).
    Tuo selittäisi ristiriitaisen tuloksen.

    Eli sinulla on ilmeisesti %polku% muuttuja oikein, koska set komento tulosti sen oikein (\\KONE1)

    Sitten pitäisi tarkistaa rivi
    find /v "NETVIEW.TXT" netview.txt | find "%polku%" > nul
    Mulla kun se toimii.

    Äänestä

  • kirjoitusvirheen muuttujan ... kirjoitti:

    "Echo käytössä" tai "Echo ei käytössä" ilmoitus tulee ajettaessa komentojonotiedostoa, kun on kirjoitettu sellainen muuttuja prosenttimerkkien sisään, jota ei ole (esimerkiksi kirjoitusvirhe).
    Tuo selittäisi ristiriitaisen tuloksen.

    Eli sinulla on ilmeisesti %polku% muuttuja oikein, koska set komento tulosti sen oikein (\\KONE1)

    Sitten pitäisi tarkistaa rivi
    find /v "NETVIEW.TXT" netview.txt | find "%polku%" > nul
    Mulla kun se toimii.

    voisitko laittaa tänne koko komentojonotiedoston, kun meni jo sekaisin mikä on tämänhetikinen tilanne.

    Äänestä

  • net view > netview.txt kirjoitti:

    voisitko laittaa tänne koko komentojonotiedoston, kun meni jo sekaisin mikä on tämänhetikinen tilanne.

    Tämän kopioin aikaisemmasta viestistäsi

    rem @echo off
    FOR /F "tokens=1,3* delims=," %%G IN (myfile.csv) DO (
    echo %%G %%H
    set polku="\\%%G%"
    set polku
    net view | find /c %%polku > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"
    )
    pause

    Kunhan poistat sitaatit ja %-merkin ja lisäät sitaatit toiseen kohtaan jne.. (taisin kopsata vanhan version, mutta korjasin huomaamani/luulemani virheet.

    eli oikein olisi (jätin tarkistusmuotoon eli en poistanut tulostuksia väliltä)

    rem @echo off
    FOR /F "tokens=1,3* delims=," %%G IN (myfile.csv) DO (
    echo %%G %%H
    set polku=\\%%G
    set polku
    net view | find "%polku%" > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"
    )
    pause

    En jaksanut ajatelle enää tuota ehdottamaani muutosta, jossa tulostetaan tekstitiedostoon ja sen sovittamista sinun komentojonoosi.
    Myöskään for silmukkaa en tarkistanut, kun en ottanut tarkemmin selvää.

    Äänestä

  • toimia kirjoitti:

    Tämän kopioin aikaisemmasta viestistäsi

    rem @echo off
    FOR /F "tokens=1,3* delims=," %%G IN (myfile.csv) DO (
    echo %%G %%H
    set polku="\\%%G%"
    set polku
    net view | find /c %%polku > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"
    )
    pause

    Kunhan poistat sitaatit ja %-merkin ja lisäät sitaatit toiseen kohtaan jne.. (taisin kopsata vanhan version, mutta korjasin huomaamani/luulemani virheet.

    eli oikein olisi (jätin tarkistusmuotoon eli en poistanut tulostuksia väliltä)

    rem @echo off
    FOR /F "tokens=1,3* delims=," %%G IN (myfile.csv) DO (
    echo %%G %%H
    set polku=\\%%G
    set polku
    net view | find "%polku%" > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"
    )
    pause

    En jaksanut ajatelle enää tuota ehdottamaani muutosta, jossa tulostetaan tekstitiedostoon ja sen sovittamista sinun komentojonoosi.
    Myöskään for silmukkaa en tarkistanut, kun en ottanut tarkemmin selvää.

    eli jostain kumman syystä tuo find-komento ei saa tuota muuttujan arvoa :S omituista kyllä jos sulla toimii...

    rem @echo off
    net view > netview.txt
    FOR /F "tokens=1,3* delims=," %%G IN (myfile.csv) DO (
    echo %%G %%H
    set polku=\\%%G
    set polku
    echo %polku%
    find /v "NETVIEW.TXT" netview.txt | find "%polku%" > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"
    )
    pause

    Äänestä

  • skriptooja kirjoitti:

    eli jostain kumman syystä tuo find-komento ei saa tuota muuttujan arvoa :S omituista kyllä jos sulla toimii...

    rem @echo off
    net view > netview.txt
    FOR /F "tokens=1,3* delims=," %%G IN (myfile.csv) DO (
    echo %%G %%H
    set polku=\\%%G
    set polku
    echo %polku%
    find /v "NETVIEW.TXT" netview.txt | find "%polku%" > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"
    )
    pause

    Testasin viimeksi tällä

    set koe=KONE1
    net view > netview.txt
    find /v "NETVIEW.TXT" netview.txt | find "%koe%" > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"


    ja tässä tulos

    E:\>onkokone.cmd

    E:\>set koe=KONE1

    E:\>net view 1>netview.txt

    E:\>find /v "NETVIEW.TXT" netview.txt | find "KONE1 " 1>nul

    E:\>if 0 == 0 echo "Online"
    "Online"

    E:\>if 0 == 1 echo "Offline"

    E:\>

    Sinullahan tulosti set polku oikean arvon.
    (ja echo varmaankin)

    Äänestä

  • for silmukassa kirjoitti:

    Testasin viimeksi tällä

    set koe=KONE1
    net view > netview.txt
    find /v "NETVIEW.TXT" netview.txt | find "%koe%" > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"


    ja tässä tulos

    E:\>onkokone.cmd

    E:\>set koe=KONE1

    E:\>net view 1>netview.txt

    E:\>find /v "NETVIEW.TXT" netview.txt | find "KONE1 " 1>nul

    E:\>if 0 == 0 echo "Online"
    "Online"

    E:\>if 0 == 1 echo "Offline"

    E:\>

    Sinullahan tulosti set polku oikean arvon.
    (ja echo varmaankin)

    E:\>find /v "NETVIEW.TXT" netview.txt | find "KONE1 " 1>nul

    niin mulla tulee vieläkin tohon find-komentoon vaan näin:

    E:\>find /v "NETVIEW.TXT" netview.txt | find "" 1>nul

    voiko koneen jotkut asetukset vaikuttaa tähän?

    Äänestä

  • skriptooja kirjoitti:

    E:\>find /v "NETVIEW.TXT" netview.txt | find "KONE1 " 1>nul

    niin mulla tulee vieläkin tohon find-komentoon vaan näin:

    E:\>find /v "NETVIEW.TXT" netview.txt | find "" 1>nul

    voiko koneen jotkut asetukset vaikuttaa tähän?

    for silmukassa ei toiminut sijoitus set=\\A% vaan muuttuja jämähti samaan arvoon.

    Sitten sijoitin suoraan
    find /v "NETVIEW.TXT" netview.txt | find "%%A" > nul
    Nyt toimi muuten, mutta errorlevel jämähti ensimmäiseen arvoon.

    Pitäisi käyttää call funktiotta ja toista komentojonoa testaukseen.

    Pitäsikä sitä kokeilla.
    Simukka toiseen ja se kutsuisi testausta toisesta komentojonosta. Voisi ratkaista molemmat ongelmat.

    Äänestä

  • for silmukassa kirjoitti:

    Testasin viimeksi tällä

    set koe=KONE1
    net view > netview.txt
    find /v "NETVIEW.TXT" netview.txt | find "%koe%" > nul
    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"


    ja tässä tulos

    E:\>onkokone.cmd

    E:\>set koe=KONE1

    E:\>net view 1>netview.txt

    E:\>find /v "NETVIEW.TXT" netview.txt | find "KONE1 " 1>nul

    E:\>if 0 == 0 echo "Online"
    "Online"

    E:\>if 0 == 1 echo "Offline"

    E:\>

    Sinullahan tulosti set polku oikean arvon.
    (ja echo varmaankin)

    joo näyttää toimivan ilman for-silmukkaa eli jotenkin se ei osaa käyttää tota muuttujaa siinä. Olisiko tähän jotain ratkaisua?

    Äänestä

  • skriptooja kirjoitti:

    joo näyttää toimivan ilman for-silmukkaa eli jotenkin se ei osaa käyttää tota muuttujaa siinä. Olisiko tähän jotain ratkaisua?

    FOR %%A Silmukkaehto DO CALL TEST2.BAT %%A

    %%A välittyy TEST2.BAT tiedostolle %1:nä (ensimmäinen parametri)
    http://www.robvanderwoude.com/parameters.html

    Äänestä

  • tähän tapaan kirjoitti:

    FOR %%A Silmukkaehto DO CALL TEST2.BAT %%A

    %%A välittyy TEST2.BAT tiedostolle %1:nä (ensimmäinen parametri)
    http://www.robvanderwoude.com/parameters.html

    pääkomentojono
    ------------------------------------------
    net view > netview.txt

    for %%A in (KONE1 KONE2 KONE3) DO call onkokonetesti.cmd %%A

    ******************************************

    Testikomentojono nimelle onkokonetesti.cmd
    ------------------------------------------
    set polku=%1

    echo %polku%

    find /v "NETVIEW.TXT" netview.txt | find "%polku%" > nul

    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"
    -------------------------------------------

    Äänestä

  • kadella komentojonolla kirjoitti:

    pääkomentojono
    ------------------------------------------
    net view > netview.txt

    for %%A in (KONE1 KONE2 KONE3) DO call onkokonetesti.cmd %%A

    ******************************************

    Testikomentojono nimelle onkokonetesti.cmd
    ------------------------------------------
    set polku=%1

    echo %polku%

    find /v "NETVIEW.TXT" netview.txt | find "%polku%" > nul

    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"
    -------------------------------------------

    eli kenoviivat eivät haitanneet.

    set polku=\\%1

    echo %polku%

    find /v "NETVIEW.TXT" netview.txt | find "%polku%" > nul

    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"

    Äänestä

  • kadella komentojonolla kirjoitti:

    pääkomentojono
    ------------------------------------------
    net view > netview.txt

    for %%A in (KONE1 KONE2 KONE3) DO call onkokonetesti.cmd %%A

    ******************************************

    Testikomentojono nimelle onkokonetesti.cmd
    ------------------------------------------
    set polku=%1

    echo %polku%

    find /v "NETVIEW.TXT" netview.txt | find "%polku%" > nul

    if %ErrorLevel%==0 echo "Online"
    if %ErrorLevel%==1 echo "Offline"
    -------------------------------------------

    tällä ohjeella sain toimimaan. kiitos paljon avusta!

    Äänestä

  • skriptooja kirjoitti:

    tällä ohjeella sain toimimaan. kiitos paljon avusta!

    kun olen niin laiska opettelemaan ulkoa asioita.
    Pitää aina olla joku tehtävä, mitä varten hakee tietoa.

    Varmaan olisi hyvä ratkoa muutamia tuollaista tehtävää, niin olis perusteita hanskassa.

    Äänestä

Kommentoi aloitusta


skriptooja kirjoitti:

Pitäisi saada tehtyä skripti joka testaa onko työasema online-tilassa vai ei ja ilmottaisi sen sitten. Onko tällainen mahdollista tehdä ihan perus "windows/dos"-skriptinä?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu