Gå til innhold

En litt mer avansert shutdown batch fil?


Anbefalte innlegg

Hei. Fant ikke noen "request" seksjon, så poster denne her:

 

Bruker shutdown-commanden så å si hver kveld fordi jeg ofte ser på film og når filmen er ferdig orker jeg ikke gå helt til PCen for å skru den av igjen.

 

Det jeg vil ha er en batch fil som kjører shutdown (shutdown -s -t 12000/16000) der jeg kan velge selv om jeg vil ta shutdown'en om 12- eller 16000 sekunder. Tenkte noe ala "trykk Y for 12000 og I for 16000 sekunder."

 

 

Dette er sikkert noe en erfaren kan snekre sammen på 1 minutt, så håper noen gidder ta seg bryet og sende meg koden :)

Lenke til kommentar
Videoannonse
Annonse

heiasnn der,

 

ta en titt på dette og se om du skjønner noe:

@echo off
cls
echo.
echo This is a replacement computer for XXX.
echo Please type A or B, according to the computer you want to replace.
echo (A is BRIDGE, B is ECR).
echo.
echo WARNING!
echo THE COMPUTER SHOULD BE IN ITS DESIGNATED PLACE,
echo AND BE CONNECTED TO BOTH NETWORKS!
echo IF IT IS NOT PROPERLY INSTALLED, THE SETUP WILL FAIL!
echo.
goto menu

:MENU
SET /P M=Type A or B, then press ENTER. (Or press X to turn off the computer). 
if %M% == a goto CONFIRMA
if %M% == b goto CONFIRMB
if %M% == x goto OFF

:CONFIRMA
cls
echo.
echo You have selected to set up this replacement computer as PCA.
SET /P C=Please confirm you selection with Y, or N to go back. 
if %C% == y goto PCA
if %C% == n goto MENU
echo.

:PCA
cls
echo.
echo Please sit back and wait for the setup to complete.
echo.
netsh interface ip set address name="Local Area Connection" static 10.0.1.120 255.255.255.0
netsh interface ip set address name="Local Area Connection 2" static 10.0.0.20 255.255.255.0
copy c:\Citect\citect_PCA.ini "C:\Program Files\Citect\CitectSCADA 7\Bin\citect.ini"
echo.
echo.
echo The setup will now sleep in 30 seconds,
echo to be able to set up the network interfaces!
sleep 30
net use Z: \\10.0.1.110\Citect
sleep 5
regedit /s C:\XXX\startup.reg
sleep 2
net localgroup administrators XXX /delete
goto end

:CONFIRMB
cls
echo.
echo You have selected to set up this replacement computer as PCB.
SET /P C=Please confirm you selection with Y, or N to go back. 
if %C% == y goto PCB
if %C% == n goto MENU
echo.

:PCB
cls
echo.
echo Please sit back and wait for the setup to complete.
echo.
netsh interface ip set address name="Local Area Connection" static 10.0.1.110 255.255.255.0
netsh interface ip set address name="Local Area Connection 2" static 10.0.0.10 255.255.255.0
copy c:\Citect\citect_PCB.ini "C:\Program Files\Citect\CitectSCADA 7\Bin\citect.ini"
echo.
echo.
echo The setup will now sleep in 30 seconds,
echo to be able to set up the network interfaces!
sleep 30
net use Z: \\10.0.1.120\Citect
sleep 5
regedit /s C:\XXX\startup.reg
sleep 2
net localgroup administrators XXX /delete
goto end

:OFF
echo.
echo Goodbye...
shutdown -s -t 10 -f -c "You have chosen to abort the setup and turn off the computer. The setup will start next time you power on."

:end
cls
echo.
pause
shutdown -r -t 10 -f -c "Congratulation, the seup is complete! The system will restart, and boot into XXX!"

 

Alle XXX er firmanavnet dette er laget for, vil ikke ha dette opp i søk på google.

Endret av jale
  • Liker 1
Lenke til kommentar

Ok, skal gi deg litt mer hjelp, ettersom jeg bare sitter her uansett... :)

 

:MENU
SET /P M=Type A or B, then press ENTER. (Or press X to turn off the computer). 
if %M% == a goto CONFIRMA
if %M% == b goto CONFIRMB
if %M% == x goto OFF

 

Dette er en meny. Den kan ha så mange valg som du vil. Her må man trykke A, B eller X for å gjøre noe, alle andre taster er ugyldige. Hvis man trykker A, så går programmet til sekvensen som heter :CONFIRMA

 

:CONFIRMA
cls
echo.
echo You have selected to set up this replacement computer as PCA.
SET /P C=Please confirm you selection with Y, or N to go back. 
if %C% == y goto PCA
if %C% == n goto MENU
echo.

 

Dette er et nytt valg, som egentlig bare spør om du er sikker på valget ditt... Trykker man Y for Yes, så hopper programmet til selve koden som skal utføres :PCA

 

:PCA
cls
echo.
echo Please sit back and wait for the setup to complete.
echo.
netsh interface ip set address name="Local Area Connection" static 10.0.1.120 255.255.255.0
netsh interface ip set address name="Local Area Connection 2" static 10.0.0.20 255.255.255.0
copy c:\Citect\citect_PCA.ini "C:\Program Files\Citect\CitectSCADA 7\Bin\citect.ini"
echo.
echo.
echo The setup will now sleep in 30 seconds,
echo to be able to set up the network interfaces!
sleep 30
net use Z: \\10.0.1.110\Citect
sleep 5
regedit /s C:\XXX\startup.reg
sleep 2
net localgroup administrators XXX /delete
goto end

 

Her gjør skriptet alt som skal gjøres. I dette tilfelle setter den to IP-adresser, kopierer en fil, mapper opp en nettverksstasjon, legger til en fil i registeret og sletter administrator gruppen fra pc'en. Til slutt hopper den til :END

 

:end
cls
echo.
pause
shutdown -r -t 10 -f -c "Congratulation, the seup is complete! The system will restart, and boot into XXX!"

 

END gjør nesten det du vil gjøre, den skrur av pc'en...

 

Du vil da ha en meny, lik som en av de over, men du har to forskjellige shutdown-koder. En som slår av etter 12000 sekunder, og en som slår av etter 16000 sekunder. I menyen velger du hvilken kode du skal gå til.

 

Ditt skript kan se slik ut:

:MENU
SET /P M=Trykk y eller i, for å velge henholdsvis 12000 sekunder eller 16000 sekunder før maskinen slås av. 
if %M% == y goto A12000
if %M% == i goto B16000

:A12000
cls
echo.
shutdown -s -t 12000

:B16000
cls
echo.
shutdown -s -t 12000

 

ikke testet... :)

Endret av jale
  • Liker 1
Lenke til kommentar

Denne er testet :)

Ca det samme som koden over, utenom en feil som blir gjort der, om man ikke trykker på verken i eller y, så slår den av etter 12000

@echo off
:start
set /p valg="trykk Y for 12000 og I for 16000 sekunder."
if %valg%==i goto i
if %valg%==y goto y
if %valg%==q exit 
echo feil valg, velg Y for 12000 og I for 16000
goto start
:y
shutdown -s -t 12000 -f
exit
:i
shutdown -s -t 16000 -f
exit

Endret av aklla waits for alice
  • Liker 1
Lenke til kommentar

Takk til begge to for hjelp, men tror jeg klarte det med min egen kode :O :)

 

@echo off
cls
echo.
echo Shutdown?
echo A = 12000 secounds - B = 16000 secounds.
echo.
goto menu

:MENU
SET /P M=Type A or B, then press ENTER.
if %M% == a goto CONFIRMA
if %M% == b goto CONFIRMB
if %M% == x goto OFF

:CONFIRMA
cls
echo.
echo You have selected to shutdown your computer in 12000 secounds.
SET /P C=Please confirm you selection with Y, or N to go back. 
if %C% == y goto PCA
if %C% == n goto MENU
echo.

:PCA
cls
echo.
echo Please sit back and wait for the setup to complete.
echo.
echo.
shutdown -s -t 12000
echo.
goto end

:CONFIRMB
cls
echo.
echo You have selected to shutdown your computer in 16000 secounds.
SET /P C=Please confirm you selection with Y, or N to go back. 
if %C% == y goto PCB
if %C% == n goto MENU
echo.

:PCB
cls
echo.
echo Please sit back and wait for the setup to complete.
echo.
echo.
shutdown -s -t 16000
echo.

 

Funka fint her, men skal teste en av deres for å se om de er bedre ;)

Lenke til kommentar

Den skal funke, om du taster inn riktig bokstav.

Velger trykker du på f.eks D ved første valg vil du få opp "You have selected to shutdown your computer in 12000 secounds."

 

CMD går nedover så lenge den ikke får beskjed om å gjøre noe annet, så om verken "if %M% == a goto CONFIRMA" eller "if %M% == b goto CONFIRMB" stemmer hopper den videre til neste kommando.

Det samme gjelder etter CONFIRMA, velger du feil der slår den av pc`n etter 12000 sekunder

"if %M% == x goto OFF" gjør ingenting da OFF ikke finnes.

"goto END" gjør heller ingenting da END ikke finnes.

 

Det er få vidt jeg kan se slike feil flere steder også i koden din...

Endret av aklla waits for alice
Lenke til kommentar

\n var egentlig for å bytte linje, men det funka ikke helt som det skulle. Fjernet den...

 

Men, nei, det må lages slik at det alltid kan hoppe til neste linje om f.eks en if-setning ikke stemmer.

 

Hva vil du gjøre om du ett eller annet sted skriver inn en m i stedet for en gyldig bokstav?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...