PDA

Visualizza versione completa : [Dos/batch]Spegnere il pc dopo una procedura batch


Stefano007
10-07-2006, 15.17.45
Mi chiedevo come possa fare per spegnere il pc dopo aver eseguito una procedura batch. Lo avevo letto tempo fa da qualche parte, forse anche qui. Poi volevo sapere tutti i comandi con i bat dove posso trovarli, una volta li conoscevo bene però non so più dove cercarli.
Grazie anticipatamente.
Ciao
Ste

LoryOne
10-07-2006, 17.07.54
Per quanto riguarda spegnere il PC, basta che fai una ricerca su Wintricks.
Ha a che fare con shell32 + pseudofunzioneAPI + parametri (boh, non ricordo bene, poi guardo se ti riesco a trovare la sezione giusta ;) )

Se invece vuoi sapere tutti i comandi batch, digita cmd da start->esegui
poi dal prompt digita help.
Ti apparirà una lista di comandi.
Per ogni comando digita nomecomando e /? es: for /?

Ti consiglio di redirezionare l'output su stampante per crearti una guida es: for /? >prn oppure for /? >\\nomehost\nomestampante

Poichè la formattazione non è delle migliori, ti consiglio prima di redirezionarlo su un file .txt, modificarlo con editor di teso ed infine stamparlo.

:)

Semi.genius
10-07-2006, 20.39.20
per DOS, intendi che lo stai eseguendo sotto DOS o sotto il prompt?
Se hai Windows
comando per spegnere PC (Windows XP): RunDll32.exe USER.DLL, exitwindows
(Win 98)RUNDLL32 SHELL32.DLL,SHExitWindowsEx 0
Se hai DOS, c'era un modo per farlo ma lo devo cercare...

Stefano007
11-07-2006, 10.38.36
Grazie per le risposte.
Per LoryOne: quello che dici sono i comandi dos che per fortuna li conosco ancora bene, mentre so che ci sono comandi più complessi, comunque grazie.
Per Semi.genius: sì intendo che lo sto eseguendo sotto il prompt di Windows XP e ME perchè è un programma che va sotto windows e funziona anche da riga di comando. Quindi se devo spegnere sia per XP che per ME cosa scrivo nel batch? Scusa son un po de coccio.
Grazie

LoryOne
11-07-2006, 12.17.07
Grazie per le risposte.
Per LoryOne: quello che dici sono i comandi dos che per fortuna li conosco ancora bene, mentre so che ci sono comandi più complessi

Ora sono io che son curioso.
Quali sono i comandi più complessi ?

Semi.genius
11-07-2006, 13.13.40
Grazie per le risposte..
Per Semi.genius: sì intendo che lo sto eseguendo sotto il prompt di Windows XP e ME perchè è un programma che va sotto windows e funziona anche da riga di comando. Quindi se devo spegnere sia per XP che per ME cosa scrivo nel batch? Scusa son un po de coccio.
Grazie

Devi differenziale i due commandi tramite l'utilizzo di IF

In Windows XP, esiste la variabile di ambiente OS per indicare il sistema operativo, ma non saprei se è la stessa di Windows 98

Sennò ne puoi impostre tu una manualmente con lo stesso nome negli entrambi gli OS e po nel tuo file di batch, differenzia le due procedure in base a quella

Stefano007
11-07-2006, 14.35.21
Ora sono io che son curioso.
Quali sono i comandi più complessi ?
Sono quei comandi che ti permettono per esempio di eseguire dei comandi dopo un determinato tempo, altri in questo momento non me ne vengono in mente (dovrei guardare i miei vecchi files)

Devi differenziale i due commandi tramite l'utilizzo di IF
In Windows XP, esiste la variabile di ambiente OS per indicare il sistema operativo, ma non saprei se è la stessa di Windows 98
Sennò ne puoi impostre tu una manualmente con lo stesso nome negli entrambi gli OS e po nel tuo file di batch, differenzia le due procedure in base a quella
Mi sembra più complesso fare così, potrei fare due diferrenti file batch uno per XP e uno per Me; ma il comando per spegnere quale sarebbe? per xp e per ME?
Grazie

LoryOne
11-07-2006, 15.47.39
Il comando per spegnere è quello che viene richiamato quando manualmente fai spegnere il computer.
In Windows, come in DOS c'è una sorta di interprete dei comandi impartiti.
In DOS c'era command.com, mentre in Windows c'è tutta una serie di librerie, specifiche per ogni utilizzo ma che insieme danno vita al S.O.
La principale è kernel32, poi c'è GDI32 per l'interfaccia e così via.
Diciamo che senza kernel32 è come se DOS non avesse IO.SYS e MS-DOS.SYS.
Non è finita qui:
In DOS si accedeva alle periferiche attraverso i file .SYS, mentre in Windows, tali file hanno estensione VXD.
Ad ogni modo, per farla breve e non andare un po troppo fuori dal seminato, in Windows basta lanciare l'interprete dei comandi che lancia a sua volta la libreria che contiene al suo interno la funzione specifica che esegue l'operazione impartita attraverso il passaggio di un parametro.
Ecco cosa intendo (e che Semi.Genius ti ha già spiegato) :
RUNDLL32 SHELL32.DLL,SHExitWindowsEx 0
E' un po come dire:
Esegui command.com che riconosce il comando digitato al prompt che attraverso la riga di comando legge il parametro passatogli.
Gira che ti rigira è sempre la stessa storia.

Nb: A dire il vero c'è una grande novità ripetto a DOS e non è roba da poco: basare il funzionamento sull'intercettazione delle code dei messaggi

Stefano007
11-07-2006, 16.23.31
Ok! Grazie. A titolo informativo cosa significa: "....basare il funzionamento sull'intercettazione delle code dei messaggi".
Ciao

LoryOne
11-07-2006, 19.38.25
E' un concetto che porta inevitabilmente ad introdurne altri due che si chiamano hooking e subclassing.
In pratica a conoscere come Windows funziona internamente ma è un discorso piuttosto complesso ed articolato che necessita di molta pazienza, duro lavoro e moltissima pratica.

Stefano007
12-07-2006, 10.06.48
Grazie per la risposta.
Ciao