Visualizzazione post con etichetta cmd. Mostra tutti i post
Visualizzazione post con etichetta cmd. Mostra tutti i post

giovedì 28 luglio 2016

Programmazione Batch: Verificare se lo script è stato eseguito come Amministratore (privilegi elevati)

In alcuni casi può essere utile verificare se lo script batch da noi realizzato è stato eseguito come amministratore (con privilegi elevati). Un modo veloce per effettuare la verifica all'interno dello script è attraverso una particolare variabile d'ambiente: %errorlevel%. Questa variabile contiene un valore relativo all'esito di gran parte dei comandi/programmi: quando un comando viene portato a termine correttamente il valore di %errorlevel% sarà uguale a 0.

Alcuni comandi, come openfiles, NET SESSION, ecc. richiedono privilegi elevati per essere eseguiti e questo li rende adatti al nostro scopo infatti, tentando di eseguire questi comandi normalmente (senza privilegi elevati), verranno terminati con errore e alla variabile %errorlevel% verrà assegnato un valore diverso da 0 (FIG 1).


Variabile d'ambiente %errorlevel%
FIG 1 - Variabile d'ambiente %errorlevel%


Nello script batch che è possibile scaricare dal link DOWNLOAD la verifica viene effettuata proprio con il comando openfiles. L'output del comando viene scartato dirottandolo su NUL (>nul 2>&1) e viene verificata la variabile d'ambiente %errorlevel%: se la variabile ha valore 0 allora il nostro script è stato eseguito con privilegi elevati e possiamo proseguire con le altre istruzioni, in caso contrario lo script termina senza eseguire altre operazioni. Le istruzioni principali del nostro script sono dunque le seguenti:


openfiles>nul 2>&1
if %errorlevel%==0 goto AdminOK






venerdì 12 giugno 2015

Windows Quick Tip: Eseguire comandi multipli dal prompt dei comandi

Dal prompt dei comandi è possibile eseguire comandi multipli su una singola riga separandoli con &&. Nell'utilizzo di tale separatore è importante tenere in considerazione che i comandi vengono eseguiti procedendo da sinistra verso destra e che il comando successivo verrà eseguito solo se il precedente è terminato senza errori.


Ad es.
dir a: && pause
Nel caso in cui a: non sia una lettera di unità valida (e pronta) il comando pause non verrà mai eseguito. Questo capita in quanto il separatore && esegue il controllo degli errori.

Separatore di comandi &&
FIG 1 - Separatore di comandi &&

Se si intende eseguire il comando successivo anche se il precedente non restituisce i risultati previsti è possibile utilizzare il separatore &.

Ad es.
dir a: & pause
in questo caso pause verrà eseguito anche se il comando dir a: termina con errore, come è possibile vedere nella seguente figura.

Separatore di comandi &
FIG 2 - Separatore di comandi &

giovedì 11 giugno 2015

Windows Quick Tip: Abilitare l'auto-completamento nel prompt dei comandi

Per chi utilizza frequentemente il prompt dei comandi può essere utile avere la funzione di completamento automatico dei nomi dei file e cartelle. 
É possibile abilitare l'auto-completamento sia in maniera permanente, agendo tramite il registro di sistema, sia temporaneamente solo per la sessione corrente.

Attivare il completamento automatico in CMD temporaneamente
Per attivare l'auto-completamento basta eseguire il comando cmd /f. Il comando può essere eseguito sia all'interno della stessa finestra del prompt dei comandi (in questo caso l'auto-completamento viene abilitato nella stessa finestra/sessione) oppure digitando ed eseguendo il comando da Esegui (WIN+R), in questo caso verrà aperta una nuova sessione del prompt dei comandi con abilitato il completamento automatico.
Una volta attivato il completamento automatico è possibile premere CTRL+D per completare i nomi delle cartelle oppure CTRL+F per completare il nome dei file.

Per disabilitare il completamento automatico basta eseguire, all'interno del prompt dei comandi, il comando cmd /f:off oppure semplicemente chiudere la finestra.


Attivare il completamento automatico in CMD in modo permanente
Per attivare il completamento automatico in modo permanente all'interno del prompt dei comandi è necessario agire tramite il registro di sistema.
  • Accedere all'editor di registro (regedit.exe).
  • Se si intende effettuare l'abilitazione per tutti gli utenti che utilizzano la postazione posizionarsi su 
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
  • Se, invece, intendiamo abilitare l'auto-completamento solo per l'utente corrente 
    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\ 
    Ovviamente le impostazioni specifiche per l'utente (HKEY_CURRENT_USER) avranno precedenza sulle impostazioni a livello macchina (HKEY_LOCAL_MACHINE).
  • Per il completamento di nomi di cartelle, fare doppio clic sul valore DWORD CompletionChar e assegnargli uno dei seguenti valori a seconda del carattere di controllo che si intende utilizzare
    0x9 (digitare il valore 9 che verrà automaticamente convertito in esadecimale) per utilizzare il tasto TAB come carattere di controllo
    0x4 (digitare il valore 4 che verrà automaticamente convertito in esadecimale) per utilizzare CTRL+D
    0x6 (digitare il valore 6 che verrà automaticamente convertito in esadecimale) per utilizzare CTRL+F
  • Per il completamento di nomi di file, fare doppio clic sul valore DWORD PathCompletionChar e assegnare uno dei seguenti valori a seconda del carattere di controllo che si intende utilizzare
    0x9 per utilizzare il tasto TAB come carattere di controllo
    0x4 per utilizzare CTRL+D
    0x6 per utilizzare CTRL+F
Completamento automatico del prompt dei comandi
FIG 1 - Completamento automatico del prompt dei comandi


lunedì 8 giugno 2015

Windows Quick Tip: Elenco stampabile dei processi attivi

Per visualizzare i processi in esecuzione su un computer dotato di Windows basta eseguire, ad es. tramite la combinazione di tasti CTRL+SHIFT+ESC, Gestione Attività (Task Manager nei sistemi Windows XP e antecedenti)  e selezionare la scheda Processi (In Windows 8 e 8.1 è possibile selezionare la scheda Dettagli). Purtroppo il tool non permette facilmente di salvare l'elenco o di stamparlo. Per questo tipo di operazione possiamo affidarci al Prompt dei comandi o alla console avanzata PowerShell.


Gestione attività
FIG 1 - Gestione Attività

Prompt dei comandi
  • Avviare il prompt dei comandi: WIN+R e digitare cmd seguito da invio. 
  • Digitare il seguente comando seguito da invio per visualizzare l'elenco dei processi in esecuzione
    tasklist
  • Se i processi attivi sono numerosi e vogliamo visualizzarli in più pagine, il comando da eseguire è
    tasklist |more
  • Se intendiamo salvare l'elenco dei processi all'interno degli appunti (clipboard)
    tasklist |clip
  • Se, invece, vogliamo salvare l'output del comando in un file di testo
    tasklist > c:\processi.txt 

    in questo modo l'elenco dei processi in esecuzioni sarà salvato nel file processi.txt presente in c:\ e possiamo stamparlo facilmente.

PowerShell
  • Avviare PowerShell: WIN+R e digitare powershell seguito da invio
  • Per visualizzare l'elenco dei processi digitare il seguente comando e premere invio per eseguirlo 
    get-process
  • Per dirottare l'output del comando in un file di testo possiamo eseguire il comando
    get-process |out-file "c:\processi.txt"