Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...

Kanal D va difuza serialul “...
 Upgrade xiaomi mi11

securitate - acum se dau drept - ...

Farmacia Dr Max - Pareri / Sugest...

De unde cumparati suspensii / gar...
 [UNDE] Reconditionare obiecte lemn

Infiltratii casa noua

sugestie usa interior

ANAF si plata la selfpay
 Imprimanta ciss rezista perioade ...

Garmin fēnix 7 / PRO / Saphi...

Care sunt cele mai mari regrete a...

Alfa Romeo Stelvio 2.2 jtd
 

Problema script .bat

- - - - -
  • Please log in to reply
4 replies to this topic

#1
JaJe

JaJe

    Active Member

  • Grup: Members
  • Posts: 1,102
  • Înscris: 03.08.2008
Salutare,
Am o nelamurire, in incercarea de a invata mai multe despre script-uri, m-am lovit de o problema ce nu ii dau de cap, poate cineva imi poate explica unde gresesc.
Acesta este codul:

@echo off
echo Alege configurarea placii de retea Wi-Fi
:MENU
echo.
echo 1. Static
echo 2. DHCP
echo.
echo.
set /p strCHOICE=Alege:
if %strCHOICE%==1 (set /p strIP=Adauga IP-ul 192.168.92.
netsh interface ip set address name="Wireless Network Connection" static 192.168.92.%strIP% 255.255.255.0 192.168.92.1
netsh interface ip set dns name="Wireless Network Connection" static 192.168.92.1
) ELSE (
if /i %strCHOICE%==static (set /p strIP=Adauga IP-ul 192.168.92.
netsh interface ip set address name="Wireless Network Connection" static 192.168.92.%strIP% 255.255.255.0 192.168.92.1
netsh interface ip set dns name="Wireless Network Connection" static 192.168.92.1
) ELSE (
if %strCHOICE%==2 (netsh interface ip set address "Wireless Network Connection” dhcp
) ELSE (
if /i %strCHOICE%==DHCP (netsh interface ip set address "Wireless Network Connection” dhcp
) ELSE (
echo.
echo.
echo GRESIT! alege tipul de configurare!
goto :menu
))))


Problema este ca nu se intampla nimic, indiferent ca aleg sa bag o adresa IP statica sau DHCP da eroare. Unde am gresit in acest caz?

Multumesc.

#2
Alice

Alice

    Big Boobs

  • Grup: Senior Members
  • Posts: 7,144
  • Înscris: 05.12.2002
CE eroare?
Vezi ca ai prea multe paranteze la final, trebuie una singura.

#3
emillian

emillian

    Senior Member

  • Grup: Senior Members
  • Posts: 2,041
  • Înscris: 06.11.2006
E cam greu sa ma uit pe script-ul tau. L-am modificat sa arate mai bine si sa fie mai usor de verificat.

Scriptul copiat mai jos in momentul de fata nu va face nimic, doar va afisa ce anume va face. Scoate tu "Echo" de unde ai nevoie:

@echo off

echo Alege configurarea placii de retea Wi-Fi
:MENU
echo.
echo 1. Static
echo 2. DHCP
echo.
echo.
set /p strCHOICE=Alege cifra corespunzatoare actiunii:
If %strCHOICE%==1 GOTO :Static
If /i %strCHOICE%==Static GOTO :Static
If %strCHOICE%==2 GOTO :DHCP
If /i %strCHOICE%==DHCP GOTO :DHCP
echo GRESIT! alege tipul de configurare!
pause
GOTO :MENU

:Static
ECHO STATIC
set /p strIP=Adauga IP-ul 192.168.92.
If "%strIP%"=="" (
Echo.
Echo Adauga IP-ul.
pause
goto :Static
)
echo %strIP%
ECHO netsh interface ip set address name="Wireless Network Connection" static 192.168.92.%strIP% 255.255.255.0 192.168.92.1
ECHO netsh interface ip set dns name="Wireless Network Connection" static 192.168.92.1
GOTO :out

:DHCP
echo netsh interface ip set address "Wireless Network Connection" dhcp

:out
set strCHOICE=
set strIP=
pause


Ca sfat pe viitor incearca sa faci scriptul in asa fel incat sa-l poti verifica foarte repede. Il spargi in bucati (functii, module, etc) astfel incat atunci cand ai o eroare sa fie foarte usor sa vezi unde crapa scriptul.
De altfel incearca sa nu mai folosesti cod de genul IF in IF in IF pentru ca e foarte greu de urmarit.

Edited by emillian, 28 April 2016 - 10:51.


#4
JaJe

JaJe

    Active Member

  • Grup: Members
  • Posts: 1,102
  • Înscris: 03.08.2008
Multumesc inca odata pentru ajutor,
As vrea totusi sa stiu unde am gresit la scriptul meu, ce este in neregula? am mai facut scripturi similare care la final se termina cu multe paranteze inchise si multe conditii IF si merg perfect.

Multumesc inca odata pentru ajutor,
As vrea totusi sa stiu unde am gresit la scriptul meu, ce este in neregula? am mai facut scripturi similare care la final se termina cu multe paranteze inchise si multe conditii IF si merg perfect.

 emillian, on 28 aprilie 2016 - 10:46, said:


Ca sfat pe viitor incearca sa faci scriptul in asa fel incat sa-l poti verifica foarte repede. Il spargi in bucati (functii, module, etc) astfel incat atunci cand ai o eroare sa fie foarte usor sa vezi unde crapa scriptul.
De altfel incearca sa nu mai folosesti cod de genul IF in IF in IF pentru ca e foarte greu de urmarit.
Daca am multe variante de ales, daca 1, 2, sau 3 => conditia, daca orice altceva => return cum pot folosi altfel decat IF in IF in IF ?

#5
emillian

emillian

    Senior Member

  • Grup: Senior Members
  • Posts: 2,041
  • Înscris: 06.11.2006
La mine pare sa functioneze scriptul. Ieri nu l-am testat. Vezi ghilimeaua de la netsh ca una din ele nu e in regula in IF-urile de la DHCP.

Nu vad sa faci nici un check pentru IP-ul introdus... poti introduce orice ...

Attached File  testbat.JPG   57.33K   6 downloads


Referitor la intrebarea ta poti face ceva de genul acesta:
:MENU
echo.
echo 1. Task 1
echo 2. Task 2
echo 3. Task 3
Echo.
echo.
set /p Alege=
If %Alege%==1 GOTO :Task1
If %Alege%==2 GOTO :Task2
If %Alege%==3 GOTO :Task3
Echo.
Echo Raspuns gresit. Reincearca.
GOTO :MENU

:Task1
ECho Task 1
:Task2
ECHo Task 2
:Task3
Echo Task 3


Scriptul va executa linie cu linie. Daca in vreunul din IF-uri conditia e True atunci va sari la task-ul respectiv (la 1,2 sau 3). Daca in nici un if conditia nu e corect atunci o sa afiseze mesajul si se intoarce la Meniu.
In acelasi fel poti folosi si alte conditii (sa verifici variable sau din output-ul vreunei comenzi, etc).

Edited by emillian, 29 April 2016 - 10:32.


Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate