Keresés

Hirdetés

Új hozzászólás Aktív témák

  • bepken

    veterán

    sziasztok!

    úgy 1 hete villant át az agyamon, hogy azt a rengeteg előre megírt script-et (batch és powershell), amivel a melóhelyen folyamatosan teleszemetelem az egyik mappámat, talán össze lehetne rakni egy "programba".

    eddig egész sok mindenre rájöttem különböző leírások alapján, de van egy olyan hibaforrás, amit sehogy sem sikerül kiküszöbölnöm...

    a kérdéses program rész(let):

    set /p choice=Válassz! -
    ECHO.
    if '%choice%'=='0' call MAIN.bat
    if '%choice%'=='1' call ip_BP.bat
    if '%choice%'=='2' call dom_BP.bat
    if '%choice%'=='' goto start
    if not '%choice%'=='1'2'3' goto start

    amikor választok egy számot, behívja az adott az adott fájlt. ha nem választok semmit vagy nem a felsorolt opciók közül választok, akkor visszamegy az elejére. eddig rendben is van.

    viszont! hogyha mondjuk a "dom_BP.bat" fájlból visszalépek a "MAIN.bat" fájlba és "véletlenül" nyomok egy entert, akkor a legutóbb választott karakternek megfelelően viselkedik.
    ez nem egy hatalmas probléma, de okozhat kellemetlenségeket a későbbiekben, mert elég szerteágazó kis programnak tervezem.
    (például legutóbb a "0 - vissza" opciót választottam, véletlenül újra lenyomom az entert és ekkor csinál valami hülyeséget)

    eléggé laikus vagyok a témában (gondolom ez le is jött...) de remélem, nagyjából érthető, mi is volna a problémám.

    előre is köszönöm a segítséget, tanácsokat :)

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz cigam #584 üzenetére

    set /p choice= - sorral? vagy hogyan tudom ezt megtenni?

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz bepken #585 üzenetére

    betettem a set "choice=" sort mindegyik script elejére. ez úgy tűnik, meg is oldotta a problémát :)

    köszi szépen a segítséget! :R

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    a következő lépés - amit kigondoltam - az volna, hogy ezeket a scripteket egyetlen futtatható állományba pakoljam össze.
    most épp egy bat2exe nevezetű programmal oldottam meg mindezt, de nem vagyok benne biztos, hogy ez a módszer teljesen biztonságos... (tekintve, hogy az avira már kétszer beriasztott, mióta a "complie" gombbal molyolok :D )

    van erre a célra jól bevált program/módszer?
    sokkal kényelmesebb és esztétikusabb volna az egész, ha ezt a lépést sikerülne valahogy összehoznom. sőt a legkényelmesebb az volna, ha én szabhatnám meg, hogy hová csomagolja ki ezeket a fájlokat (amolyan installer "stílusban")

    [ Szerkesztve ]

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    adott egy Ethernet nevezetű helyi kapcsolat. a következő paranccsal küzdök:

    netsh interface ip set address name="Ethernet" static 192.168.2.%ip% 255.255.255.0 192.168.2.1 1
    ahol ugye "Ethernet" a kapcsolat neve, az %ip% a változó, amit korábban kell megadni

    le is fut, be is állítja a megfelelő címeket, viszont ezután megy tovább a script, a netsh interface ip show config paranccsal lekérdezem a konfigot, de valamiért éppen csak az IP címet nem mutatja...
    ha mauálisan kérdezem le, akkor viszont ott van. na ezt magyarázza el valaki :D

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz Csontikka #591 üzenetére

    megoldódott közben, alaposan benéztem...a codepage kavart be - ha jól gondolom. a script-ben 1252 szerepelt, az ankelpad-ban pedig 852-essel mentettem el mindegyiket. aztán gondolom ez futtatáskor már nem igazán tetszett neki. aztán hogy mi csúszott el annyira, hogy épp az ip címet nem írta ki a netsh paranccsal....
    lényeg, hogy miután átjavítottam 852-re a script-ben is, azután már jól működik :)

    na de van még kérdésem bőven, remélem nem gond :D

    szóval hogyan tudnám két változó értékét összefűzni, majd ezt harmadik változóként alkalmazni?
    "terem száma"-"gép száma" >> ezeket összefűzve állna össze a gép neve, például "120-13"

    a következő lépésben pedig ez alapján az érték alapján szeretném módosítani a gép nevét.
    ahogy olvasgattam, nem igazán van mód arra, hogy egyszerűen csak lecserélje, mert be kell írni a jelenlegi gép nevet is....

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz bepken #592 üzenetére

    így sikerült megoldani:

    set /p class=Terem száma:

    ...

    set /p pc=Gép száma:

    ....

    WMIC computersystem where name='TEST-PC' call rename name='%class%-%pc%'

    viszont az aktuális név így muszáj, hogy fix legyen (ami jelenleg nem probléma, mert éppen klónozás előtt vagyok)
    de továbbra is érdekelne, hogy össze lehet e hozni két változót egy változóba

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz Baryka007 #594 üzenetére

    amit szeretnék:
    először kérjen be egy számot, ez a "terem száma"
    majd kérjen be egy újabb számot, ez a "gép száma"
    végül ezt a két változót fűzze össze kötőjellel elválasztva (pl.: 130-12)

    eddig el is jutok, igazából a gépnevet is módosítja a számomra megfelelő formátumban. csak gondoltam van arra is mód, hogy ne figyelje az aktuális gépnevet, egyszerűen csak írja felül azzal, amit korábban bekért.
    (mint pl.: egy ip-cím módosításakor)
    ebben az esetben tudnám használni korábban konfigurált gépeken is, ahol még nincs egységes gépnév. (ergo mindig külön be kéne kérni azt is)

    [ Szerkesztve ]

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz Baryka007 #596 üzenetére

    tényleg ennyiből áll az a rész, ahogy fentebb írtam:

    ECHO írd be a terem számát!
    ECHO.
    set /p class=Terem száma:

    cls
    ECHO írd be a gép számát!
    ECHO.
    set /p pc=Gép száma:

    WMIC computersystem where name='TEST-PC' call rename name='%class%-%pc%'

    úgy oldottam kerültem meg a problémát, hogy csináltam egy klónt, ahol a gép neve TEST-PC

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz Baryka007 #599 üzenetére

    dehát a névnek így is fixnek kell lennie, nem?

    sajnos továbbra is azt írja ki, mint az én verziómban: "No Instance(s) Available." (ha csak nem TEST-PC a neve)

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz Baryka007 #601 üzenetére

    powershell-re gondoltam még, de azt kicsit macerás srcipt-ből indítani... ugye először engedélyezni kell adott gépen a ps srcipt futtatását. ezt így próbáltam megoldani korábban (több/kevesebb sikerrel)

    tartományba léptetés, powershell segítségével:

    @echo off
    cls
    chcp 852
    :start
    set "choice="
    cls

    set /p choice=Biztos belépteted? (I/N):
    if '%choice%'=='i' goto next
    if '%choice%'=='n' call MAIN.bat
    if '%choice%'=='' goto start
    if not '%choice%'=='i'n' goto start

    :next
    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Unrestricted -File "C:\Users\admin\Desktop\ps_enged.ps1"

    :: engedélyezi a ps script futtatását

    powershell ExecutionPolicy
    :: kiírja az aktuális státuszt (Unrestricted a jó)

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Unrestricted -File "C:\Users\admin\Desktop\ps_join_domain.ps1"
    :: futtatja a kívánt script-et

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted
    :: tiltja a ps script futtatását

    ezt régebben csináltam, azt hiszem a rendszergazda jogosultsággal való futtatás volt a gyengéje...meg nem is mindig futott le rendesen. még akkor se, ha éppen előtte sikerült lefuttatni :D szóval próbáltam kikerülni ezt is, de lehet, hogy nem fog menni...

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz zkoos7 #603 üzenetére

    lehet, hogy én értem félre, de ha egyszerűen társítanád a poweriso-t az .iso kiterjesztéshez, akkor szerintem az meg is oldaná a dolgot. (a DT legalábbis nálam így működik. dupla klikk és már mountolja is)

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz zkoos7 #605 üzenetére

    én nem ismerem a poweriso-t, szóval azzal a programmal kapcsolatban nem tudok segíteni sajnos :/

    ha van rá lehetőleg, akkor szerintem használj inkább DeamonTools-t, én ezzel oldottam meg azt, amit írtam. (van belőle lite verzió is)

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    válasz jagermester #608 üzenetére

    én ezt a pár sort használom erre a célra:

    del C:\Users\[felhasznalo]\Desktop\*.* /s /q
    xcopy [mentes utvonal]\*.* C:\Users\[felhasznalo]\Desktop /e

    megjegyezem, az én esetem elég speciális...
    a szerverre van felmásolva 3 fajta asztal "verzió" és ezek között így tudok a leggyorsabban váltani. az ikonok pozíciója nálam igazából nem annyira fontos (bár ártani nem ártana)

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

  • bepken

    veterán

    szeretnék egy script-et, ami végig pörget - mondjuk - egy txt fájlt és megmondja, hogy a bevitt érték megtalálható e az adott txt fájlban:

    @echo off

    set /p szam=
    findstr /c:'%szam%' szamok.txt
    if %errorlevel% equ 1 goto hamis
    echo igaz
    goto kesz
    :hamis
    echo hamis
    goto kesz
    :kesz

    pause

    stackoverflow-ról halásztam ezt, nálam valamiért mégsem akar működni....

    egyébként a legjobb az volna, ha excel-ből dolgozna, illetve a bevitel is ctrl+c > ctrl+v módon történhetne, ergó grafikus volna...ez viszont gondolom innentől már vbscript

    [ Szerkesztve ]

    ╔═══════ "Csak egy visszatérés létezik és az nem a királyé...hanem a JEDIÉ!" ═════╗ ╚════════════════ Xiaomi Mi A1 ═════ Huawei Nova 5T ═════════════╝

Új hozzászólás Aktív témák