Commandes windows en mode console pour les scripts

Creation: 27 juillet 2006
Mise à jour: 20 novembre 2016
Version: 1.7
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2008-2016 Jean-Louis BICQUELET-SALAÜN

Console windows Frequently-Asked Questions

A cette FAQ, est associée une liste de scripts et d'exemples de batch en mode console, consultables ici.

Pour plus d'information au sujet de cette faq, contactez Jean-Louis BICQUELET.


FAQ Revised: Sunday 20 November 2016 09:11:00


Table of Contents

1. syntaxe
2. ligne de commande
3. for
4. arithmetique
5. string
6. date
7. fichiers
8. find
9. astuce
10. compte
11. environnement
12. systeme
13. disques
14. processus
15. reseau
16. batch

1. syntaxe

1.1. comment manipuler une variable ?
set nom=toto
echo %nom%


1.2. comment faire un input clavier ?
set /p nom=Entrez une valeur ?
echo %nom%


1.3. comment recuperer la date ?
set a=%date%
ECHO. todays date is %a%
Une autre façon de faire:
echo %date%

C'est la même chose pour l'heure avec %time%

1.4. comment tester la date ?
if "%date%"=="19/05/2010" ( echo aujourd hui) else  echo ( un autre jour )
aujourd hui


1.5. comment effectuer un test ?
On utilise If suivi de /i
if /i %v% LSS 7 ( echo plus petit)
plus petit

Les opérateurs de comparaison sont:

EQU <égal à.../td>
NEQ différent de...
LSS inférieur à...
LEQ inférieur ou égal à...
GTR supérieur à...
GEQ supérieur ou égal à...


1.6. comment afficher les fichiers cachés et les fichiers systèmes?
Pour afficher
  • les fichiers cachés
    dir /ah
  • les fichiers systèmes
    dir /as
  • les fichiers cachés et systèmes
    dir /ash


1.7. comment terminer un batch?
goto:eof

Autre façon de faire:


2. ligne de commande

2.1. comment tester si on a passé un argument à la ligne de commande?
Quelques exemples
if not [%1]==[] DO set arg=ok

if [%1]==[/?] do echo aide pour le batch

if [%2]==[] do echo argument 2 est vide


2.2. comment compter le nombre d'arguments de la ligne de commande?
Pour compter le nombre d'arguments passé à un script par la ligne de commande, le plus simple est de faire un for
set /a nb=0
FOR %%A IN (%*) DO if not [%%a]==[] set /a nb=nb+1

Un exemple plus systématique permettant de traiter suivant le nombre d'options serait:

@ECHO OFF

:: compte le nombre d'arguments passés par la ligne de commande
set /a nb=0
FOR %%A IN (%*) DO if not [%%a]==[] set /a nb=nb+1


GOTO :%nb% 2>NUL
ECHO argument invalide: %1
GOTO:EOF

:1
echo 1 argument

GOTO commun

:2
echo 2 arguments
GOTO commun

:3
echo 3 arguments

:commun
REM reste du script



3. for

3.1. comment afficher les sous répertoire d'un repertoire ?
dir |awk '{print $4}' > d:\tmp\liste.txt
for /f %i in ( d:\tmp\liste.txt ) do dir %i


3.2. comment concaténer tous les fichiers d'une extension données?
for /r %%i in (*.txt) do for /f "delims=" %%j in ('type "%%i"') do echo %%j>> faq.dat


3.3. comment selectionner les colonnes comme avec awk ?

utilisez ce type de commandes. Si on part de %a, la variable %b indique la deuxieme colonne, %c la 3eme et ainsi de suite.

C:\>for /f "eol=; tokens=1,2,3 delims=, " %a in (toto) do @echo %a %c
liste 30
liste2 10


3.4. comment executer une commande sur une liste de valeurs ?
Il faut utiliser for comme ceci:
for %%x in (serveur1 serveur2 serveur3) do ftp -s:%%x%.txt

Dans notre cas on passera une commande ftp qui va chercher les fichier serveur1.txt, serveur2.txt, etc..

3.5. comment faire une boucle for pour compter ?
@echo off
for /L %%i in (1,1,10)  do echo %%i

Il est tout à fait possible de faire des boucles imbriquées.

@echo off
for /L %%i in (1,1,10) do  for /L %%j in (1,1,20) do echo %%i,%%j

On remarquera, que le double % (%%) est destiné à un script; En ligne de commande, on n'en laisse qu'un seul.

3.6. comment parcourrir rescursivement tous les répertoires?
Avec l'option /R de for:
@echo off

for /R "c:\Documents and Settings" %%i in (.) DO ( 
 pushd%%i
 Echo now in %%i
 Popd )
echo "termine"


3.7. comment faire un rmbak (comme un rmcore) ?
for /R C:\ %%i IN (*.bak) do del %%i


3.8. comment lister les répertoire commencant par ?
for /D /r %i in ("db*") DO Echo repertoire: %i


3.9. comment faire une boucle sans utiliser for?
C'est possible et c'est peut être parfois plus lisible:
@echo off
set i=
: boucle1
set /a i+=1

echo %i%
if /i not %i% equ 10 goto :boucle1



4. arithmetique

4.1. comment faire des operations arithmetiques?
set b=1
set /a a=%b% +3
4



5. string

5.1. comment faire un left$() ?
exemple left$(str,8):
@echo off

set str=chaine a tester
echo.%str%
echo.%str:~0,8%

chaine a tester
chaine a

on peut bien sur faire:

set str=%str:~0,8%


5.2. comment faire un mid$() ?
@echo off
set str=chaine a tester
echo.%str:~9,12%

L'exemple qui suit permet d'extraire valeur par valeur la date:

echo.Date   : %date%
echo.Weekday: %date:~0,3%
echo.Mois   : %date:~4,2%
echo.Jour   : %date:~7,2%
echo.Annee  : %date:~10,4%

Pour faire un mid$() jusqu'à la fin de la ligne, il ne faut rien préciser.

echo.%str:~9%

chaine a tester
teste


5.3. comment remplacer une chaine par une autre?
set str=chaine a tester
echo.%str:tester=modifier%
chaine a modifier


5.4. comment faire un right$() ?
On utilise le signe -. Un right$(str,1) se traduit par:
set str=%str:~-1%


5.5. comment concaténer des chaines?
set a=ok
set b=boy
echo %a%%b%
okboy
echo %a% %b%
ok boy


5.6. comment spliter une string ?
Il faut utiliser un for /f comme ceci:
for /f "tokens=1,2,3,4 delims=/ " %a in ( "ceci est mon text ) do set a1=%a&set a2=%b&set a3=%c& set a4=%d
set a1=ceci  & set a2=est  & set a3=mon  & set a4=texte

echo.%a2%
est

echo.%a3%
mon

attention dans un script il faudra doubler les caratères % et cela donnera ceci:

for /f "tokens=1,2,3,4 delims=/ " %%a in ( "ceci est mon texte" ) do set a1=%%a&set a2=%%b&set a3=%%c& set a4=%%d


5.7. comment supprimer tous les espaces d'une chaine?
set str=%str: =%


5.8. comment supprimer tous les blancs en début de chaine?
for /f "tokens=* delims= " %a in ("%str%") do set str=%a
set str=essai
echo.%str%
essai

Pensez à doubler les % dans un script.

5.9. comment supprimer les blancs en fin de chaine?
for /l %a in (1,1,31) do if "!str:~-1!"==" " set str=!str:~0,-1!

Mettre la dernière valleur à la longueur de la chaine.


6. date

6.1. comment afficher la date ?
date /t
31/01/2012

l'autre solution consiste à taper.

echo %date%
31/01/2012

Cette solution présente l'avantage de permettre l'affectation à une autre variable pour réutilisation:

set d=%date%
echo.%d%


6.2. comment afficher l'heure ?
echo %time%
15:33:28,91

on peut aussi utiliser time /t.

6.3. comment lancer une tache à une heure données?
at 15:41 echo "ok"
Tâche ajoutée avec ID = 2

On peux précier la répétition de la tache toutes les n secondes avec /EVERY:n.

6.4. comment lister les taches attendues?
at
État    ID  Jour                    Heure         Ligne de commande
------------------------------------------------------------------------------
        1   Chaque L Ma Me J V      21:00         C:\Outils\Stop-PC.vbs
        2   Demain                  15:41         echo ok


6.5. comment supprimer une tache donnée?
Reperez le numro de tache et utiliser l'option /DELETE.
at 2 /delete

at
État    ID  Jour                    Heure         Ligne de commande
----------------------------------------------------------------------------
        1   Chaque L Ma Me J V      21:00         C:\Outils\Stop-PC.vbs



7. fichiers

7.1. Comment créer un fichier toto de taille 0 ?
type nul > toto


7.2. comment rechercher un fichier sous DOS ?
attrib /s Msdos*
A          D:\sh_ex\dos\Msdos.htm


7.3. comment savoir si un répertoire existe ?
if exist c:\mydir\nul echo The directory 'tmp' exists.

if exist c:\tmp\nul echo The directory 'tmp' exists.
The directory 'tmp' exists.

Pour savoir si il n'existe pas on utilise if not exist.

7.4. Comment editer un fichier?
soit en utilisant notepad à partir de la console (ce qui ouvre une nouvelle fenêtre), soit en utilisant edit qui est toujours disponible.

7.5. Comment trouver l'extension d'un fichier ?
set a=c:\tmp\toto.txt

for /f "tokens=2 delims=." %%s in ("%a%") do set ext=%%s
echo %ext%


7.6. Comment lire un fichier ligne par ligne ?
@echo off
for /f "tokens=*" %%a in (%1) do (
  echo line=%%a
)
pause


7.7. Comment traiter chaque ligne d'un fichier par une procedure ?
@echo off
for /f "tokens=*" %%a in (%1) do call :processline %%a

pause
goto :eof

:processline
echo line=%*

goto :eof

:eof


7.8. Comment n'afficher qu'une plage de lignes d'un fichier.txt ?

for /f "tokens=1,* delims=:" %%i in ('findstr /n /r . fichier.txt') do if %%i geq 10 if %%i leq 20 echo %%j



8. find

8.1. comment chercher une chaine dans un fichier ?
On utilise les commandes find et findstr. find est plus simple. findstr gère ds expressions régulières.

Si on prend le petit texte d'exmple suivant:

Ceci est un texte. Il est destiné à tester la command find.
Il n'a pas été écrit par john.
Laura ne la pas lu.
C'est moi qu'il l'est écrit.

JL 01/02/2012
find "john" e.txt

---------- E.TXT
Il n'a pas ÚtÚ Úcrit par john.

find "john Laura" e.txt

---------- E.TXT

findstr "john laura" e.txt
Il n'a pas ÚtÚ Úcrit par john.

findstr "john Laura" e.txt
Il n'a pas ÚtÚ Úcrit par john.
Laura ne la pas lu.

Pour éviter les messages, on utilise b>find ou findstr avec un |:

type e.txt | find "john"
Il n'a pas ÚtÚ Úcrit par john.


8.2. comment chercher une chaine commencant la ligne par ?
Il faut utiliser l'option /B.
findstr /B "::-" sc.bat
::- mon script
::- date : 00/00/2000
::- version: 1.0

On remplacera l'option /B par /E pour rechercher une ligne se terminant par.

8.3. comment chercher une chaine dans les sous répertoire respectifs ?
findstr R /s  john *.*


8.4. comment chercher un chaine dans une liste de fichiers quelquonque?
Le plus simple est de lister tous les fichiers sur lequels porte la recherche dans un fichier d'index à raison d'u fichier par ligne et de lancer:
findstr /f:listef.txt "john"
e.txt:Il n'a pas ÚtÚ Úcrit par john.

On peut utiliser / si on désire utiliser la console.

On peut aussi marquer le fichier par de la couleur:

findstr /A:4f /f:listef.txt "john" (blanc sur fond rouge)
findstr /A:04 /f:listef.txt "john" (rouge)


8.5. quelles sont les options de find ?
Les options de find sont:

/VRecherche toutes les lignes ne contenant pas la chaine
/Ccompte le nombre de lignes contenant la chaine
/NAffiche le numéro de la ligne trouvée
/IIgone la casse


8.6. quelles sont les principales options de findstr ?
Un résumé est fait dans le tableau qui suit:

/BRecherche l'élément s'il est en début de ligne
/ERecherche l'élément s'il est en fin de ligne
/LRecherche les chaînes littéralement
/RRecherche les expressions régulières
/SRecherche les fichiers dans tous ses sous-répertoires
/IIgone la casse
/XAffiche les lignes correspondant parfaitement
/VN'affiche que les lignes qui ne correspondent pas
/MAffiche uniquement le nom des fichiers contenant la chaîne
/OAffiche le décalage des caractères pour chaque ligne
/F Lit la liste des fichiers dans le fichier spécifié
/A:Met de la couleur un code hexa HH
/PEvite les fichiers qui ont des caractères illisibles

Les rêgles sur les expressions régulières sont:

.n'importe quel caractère
*une ou plusieures occurences d'un caractère ou d'un groupe de caractères
^début de la ligne
$fin de la ligne
[]n'importe quel caractère du groupe
[^]tout ce qui n'est pas dans le groupe
[x-y]un range entre x et y
\xle caractère littéral
\début du mot
xyz\>fin du mot
.*correspond à tout


8.7. comment chercher dans un répertoire une chaine ?
gor %i IN (*.txt) do (find /n /i "mot" "%i")



9. astuce

9.1. Comment supprimer la sortie ecran ?
Rediriger l'affichage dans null
ipconfig >nul


9.2. comment savoir si la commande est bien passée?
C:\tmp>echo %errorlevel%
0


9.3. comment afficher une ligne vide?
echo:


9.4. comment afficher le paneau de controle ou la barre de tache?
Utilisez les commandes :
  • control pour afficher le panneau de contrôle
  • taskmgr pour afficher la liste des tâches


9.5. comment utiliser l'historique sous XP?
  • Pour afficher l'historique tapez doskey /history
    D:\>doskey /history
    cd ..
    dir /p
    d:
    del lo*
    set /p VARIABLE=PROMPT
    valeur
    echo %VARIABLE%
    handle
    dir /ash
    doskey /history
    
  • Pour fixer la taille de l'historique doskey /listsize=40 ou toute autre valeur souhaitée.

  • Pour reinitailiser l'historique doskey /reinstall

  • les flèches haute et bas permettent de naviguer dans l'historique.

  • F7 affiche l'historique.

  • ALT-F7 efface l'historique.

  • F8 recherche dans l'historique.

  • F9 lance une commande par son nombre.

  • ESC efface la logne.




10. compte

10.1. comment afficher les caractéristiques de son compte?
C:\>net  accounts
Fermeture forcée de la session après expiration ? :            Jamais
Durée de vie minimale du mot de passe (jours) :                0
Durée de vie maximale du mot de passe (jours) :                42
Longueur minimale du mot de passe :                            0
Nombre de mots de passe antérieurs à conserver :               Aucune
Seuil de verrouillage :                                        Jamais
Durée du verrouillage (min) :                                  30
Fenêtre d'observation du verrouillage (min) :                  30
Rôle de l'ordinateur :                                         STATION
La commande s'est terminée correctement.



11. environnement

11.1. comment connaitre les variables d'environnement sous DOS?
set
ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\WBICQ\Application Data
CLASSPATH=c:\BMC\BMC Software\CONTROL-M EM\OrbixE2A\etc\domains\OrbixE2A;c:\
BMC Software\CONTROL-M EM\OrbixE2A\asp\6.0\lib\asp-corba.jar;c:\BMC\BMC Soft
\CONTROL-M EM\OrbixE2A\asp\6.0\lib\webservices-product.jar;c:\BMC\BMC Softwa
ONTROL-M EM\OrbixE2A\asp\6.0\lib\j2ee-product.jar
CommonProgramFiles=C:\Program Files\Fichiers communs
COMPUTERNAME=SYST0001
ComSpec=C:\WINDOWS\system32\cmd.exe
ECS_INI_PATH=c:\BMC\BMC Software\CONTROL-M EM\Ini
ECS_LOG_PATH=c:\BMC\BMC Software\CONTROL-M EM\Log
ENVIR=WINNT
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\
IT_CONFIG_DOMAINS_DIR=c:\BMC\BMC Software\CONTROL-M EM\OrbixE2A\etc\domains
IT_DOMAIN_NAME=OrbixE2A
IT_LICENSE_FILE=c:\BMC\BMC Software\CONTROL-M EM\OrbixE2A\licenses.txt
IT_PRODUCT_DIR=c:\BMC\BMC Software\CONTROL-M EM\OrbixE2A
LOCAL=c:\cmd\local
LOGONSERVER=\\SYST0001
NDS_ECS_ROOT=c:\BMC\BMC Software\CONTROL-M EM
NOM=WBICQ
NUMBER_OF_PROCESSORS=1
NWLANGUAGE=English
NWUSERNAME=WBICQ
OS=Windows_NT
Path=C:\BMC\Oracle\Ora920\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Progr
iles\Oracle\jre\1.1.8\bin;C:\orant\bin;C:\Program Files\Oracle\jre\1.1.7\bin
WINDOWS\system32;C:\WINDOWS;C:\Program Files\Hummingbird\Connectivity\8.00\N
ient;c:\BMC\BMC Software\CONTROL-M EM\Ecscli;c:\BMC\BMC Software\CONTROL-M E
bixE2A\etc\bin;c:\BMC\BMC Software\CONTROL-M EM\OrbixE2A\asp\6.0\bin;c:\BMC\
Software\CONTROL-M EM\OrbixE2A\bin;c:\BMC\BMC Software\CONTROL-M EM\bin;c:\W
WS\;C:\Program Files\Novell\ZENworks\;c:\progra~1\VIAVOI~1;Path = C:\Program
es\websm\bin;c:\cmd\bin;c:\cmd\bat;c:\cmd\perl\bin;c:\cmd\python24;;c:\cmd\p
\cmd\local\bin;c:\cmd\opt\SWISH-E;Z:.
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PCOMM_Root=C:\Program Files\Personal Communications
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 4 Stepping 1, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0401
ProgramFiles=C:\Program Files
PROMPT=$P$G
PYTHONPATH=c:\cmd\pylib
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOCUME~1\WBICQ\LOCALS~1\Temp
TMP=C:\DOCUME~1\WBICQ\LOCALS~1\Temp
USER=WBICQ
USERDOMAIN=SYST0001
USERNAME=WBICQ
USERPROFILE=C:\Documents and Settings\WBICQ
WF_RESOURCES=C:\BMC\Oracle\Ora920\WF\RES\WFus.RES
windir=C:\WINDOWS
WINDOWS_LOGIN=0
WSMDIR=C:\Program Files\websm


11.2. comment tester si une variable d'environnement existe?
if not "%lLOCAL%" == "" echo ok


11.3. comment changer les couleurs de la console?
Pour changer la couleur de fond, il suffit de taper la coommande color suivie d'un code de 2 caractères hexadécimaux: Le premier chiffre correspond à la couleur de l'arrière plan, et le second à celui du texte

Le tableau qui suit donne les correspondances:

Cyan
0 Noir
1 Bleu foncé
2 Vert
3 Bleu gris
4 Marron
5 Pourpre
6 Kaki
7 Gris clair
8 Gris
9 Bleu clair
A vert clair
B
C Rouge
D Rose
E Jaune
F Blanc

Si aucun argument n'est donné, cette commande restaure les couleurs.

Par exemple pour écrire en noir sur fond blanc:

color F0
echo mon texte


11.4. comment changer le titre de la console shell?

Voici un exemple:




11.5. comment fixer la taille de la fenêtre DOS?
On utilise la commande mode avec cols = nb_colonnes lines = nb_lignes
mode con cols=80 lines=40


11.6. Comment ajouter temporairement un chemin au PATH dans un batch?
Utiliser set comme ceci:
set Path=%Path%;c:\usr\bin


11.7. Comment récupérer en paramètre le chemin d'un fichier glissé-déposé sur le batch ?
On peut faire glisser n'importe quel fichier sur un fichier batch. Le premier fichier glissé devient %1, le suivant %2 et ainsi de suite.

Cela fonctionne aussi avec un raccourci du script. On peut ainsi poser un script sur le bureau sur lequel on va faire glisser ses fichiers.

Voici un exemple de script, si vous désirez tester.

echo %1 
echo %2
echo %3 
echo %4
echo %5
pause


11.8. Comment associer une extension à une application ?
On associe une extension avec une commande par la fonction associate
associate .zip c:\opt\bin\peazip.exe

Cela modifie bien sur la base de registre.

11.9. comment obtenir les caracteristiques du terminal ?
C:\Documents and Settings\c92jbic>mode

État du périphérique LPT1:
--------------------------
    La sortie imprimante n'est pas redirigée.


État du périphérique COM1:
--------------------------
    Baud :            1200
    Parité :          None
    Bits de données :  7
    Bits d'arrêt :    1
    Temporisation :   OFF
    XON/XOFF :        OFF
    Protocole CTS :   OFF
    Protocole DSR :   OFF
    Sensibilité DSR : OFF
    Circuit DTR :     ON
    Circuit RTS :     ON


État du périphérique COM2:
--------------------------
    Baud :            1200
    Parité :          None
    Bits de données :  7
    Bits d'arrêt :    1
    Temporisation :   OFF
    XON/XOFF :        OFF
    Protocole CTS :   OFF
    Protocole DSR :   OFF
    Sensibilité DSR : OFF
    Circuit DTR :     ON
    Circuit RTS :     ON


État du périphérique CON:
-------------------------
    Lignes :          300
    Colonnes :        80
    Vitesse clavier : 31
    Délai clavier :   1
    Page de codes :   850



12. systeme

12.1. comment connaitre la version de windows?
Une association de ver> pour la version et de find permet de tester la version de windows qui tourne actuellement
ver | find /i "xp" > nul
 if %errorlevel%==0 echo Windows XP
ver | find /i "vista" > nul
 if %errorlevel%==0 echo Windows Vista
ver | find /i "NT" > nul
 if %errorlevel%==0 echo Windows NT
ver | find /i "2000" > nul
 if %errorlevel%==0 echo Windows 2000
ver | find /i "ME" > nul
 if %errorlevel%==0 echo Windows ME
ver | find /i "98" > nul
 if %errorlevel%==0 echo Windows 98
ver | find /i "95" > nul
 if %errorlevel%==0 echo Windows 95

On pourra modifier ce batch pour executer des commandes différentes quand la syntaxe change ou lorsqu'une commande n'existe pas dans une version de windows:

 ver | find /i "xp" > nul
     if %errorlevel%==0 goto xp
    ver | find /i "vista" > nul
     if %errorlevel%==0 goto vista
    ver | find /i "NT" > nul
     if %errorlevel%==0 goto win98

  echo Version inconnue
  goto fin

:xp
::  code windows XP
goto :eof

:vista
:: code windows Vista
goto :eof

:win98
:: code windows 98
goto :eof


12.2. Comment tester si un processus est lancé ?
tasklist | findstr firefox > nul
firefox.exe                 3064 Console                 0    83 628 Ko

Pour tester:

tasklist | findstr firefox
If %errorlevel%== 0 echo Firefox est lancé

Attention aux doublons:

TaskList | findstr cmd
hkcmd.exe                   3204 Console                 0     3 332 Ko
cmd.exe                     2868 Console                 0     1 408 Ko
cmd.exe                     2884 Console                 0     3 016 Ko



12.3. Comment tuer un processus ?
Cherchez son PID avec tasklist et supprimez le avec Taskkill.
TaskList | findstr cmd
hkcmd.exe                   3204 Console                 0     3 332 Ko
cmd.exe                     2868 Console                 0     1 408 Ko
cmd.exe                     2884 Console                 0     3 016 Ko

taskkill /im 3204
Opération réussie : le processus avec PID 3204 a été terminé.


12.4. comment afficher la mémoire disponible pour la console?
mem


    655360 octets de mémoire conventionelle
    655360 octets disponibles pour MS-DOS
    626928 taille maximale du programme exécutable

   1048576 octets de mémoire étendue contiguë
         0 octets disponibles de mémoire étendue contiguë
    941056 octets disponibles de mémoire XMS
           MS-DOS résident en mémoire haute (HMA)


12.5. comment réaliser un sleep de 10 secondes?
Il suffit de faire un ping bidon pendant 10 secondes et de rediriger le résultat vers NUL.
ping 0.0.0.0 -n 10 > NUL


12.6. comment connaitre le chemin courrant (pwd) ?
Il suffit d'utiliser la varaible %cd%.

12.7. comment aller à un répertoire donné puis revenir au répertoire précédent?
Il faut utiliser pushd et popd ainsi:
pushd %cd%
popd



13. disques

13.1. comment connaitre l'espace occupé sur un disque ?
fsutil volume diskfree d: Nombre total d'octets libres : 123138899968 Nombre total d'octets : 142856658944 Nombre total d'octets libres disponibles : 123138899968

on peut ainsi déterminer l'espace disponible:

fsutil volume diskfree d: | find "dispo"
Nombre total d'octets libres disponibles  : 123138895872


13.2. comment vérifier la cohérence d'un disque ?
L'équivalent de fsck sous windows est chkdsk:
chkdsk d:
Le type du système de fichiers est NTFS.
Le nom de volume est DATA.

Avertissement ! Le paramètre F n'a pas été spécifié.
Exécution de CHKDSK en mode lecture seule.

CHKDSK est en train de vérifier les fichiers (étape 1 de 3)...
La vérification des fichiers est terminée.
CHKDSK est en train de vérifier les index (étape 2 de 3)...
La vérification des index est terminée.
CHKDSK est en train de vérifier les descripteurs de sécurité (étape 3 de 3)...
La vérification des descripteurs de sécurité est terminée.

 139508459 Ko d'espace disque au total.
  19158668 Ko dans 11497 fichiers.
      5312 Ko dans 1676 index.
         0 Ko dans des secteurs défectueux.
     91651 Ko utilisés par le système.
     65536 Ko occupés par le fichier journal.
 120252828 Ko disponibles sur le disque.

      4096 octets dans chaque unité d'allocation.
  34877114 unités d'allocation au total sur le disque.
  30063207 unités d'allocation disponibles sur le disque.


13.3. comment tester si un disque existe ?
f
or %i in (c,d, e, f,z) do if exist %i:\nul echo %i

On teste si le fichier NUL existe. Cela donne pour le disque C: la syntaxe c:\nul.


14. processus

14.1. Comment lister un processuspar son nom?
d:\tmp>tasklist

Nom de l’image                 PID Nom de la sessio Numéro de s Utilisation
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0         4 Ko
System                           4 Services                   0     7 440 Ko
smss.exe                       336 Services                   0       956 Ko
csrss.exe                      524 Services                   0     4 228 Ko
wininit.exe                    604 Services                   0     4 452 Ko
services.exe                   744 Services                   0     5 900 Ko
lsass.exe                      752 Services                   0    13 564 Ko
svchost.exe                    836 Services                   0    21 372 Ko
svchost.exe                    888 Services                   0    11 440 Ko


14.2. Comment lister un processus par son nom?
tasklist /FI "IMAGENAME eq firefox.exe"

Nom de l’image                 PID Nom de la sessio Numéro de s Utilisation
========================= ======== ================ =========== ============
firefox.exe                   4036 Console                    5   280 068 Ko


14.3. Comment lister les processus avec les dll qu'ils executent?
tasklist /m
tasklist.exe                 10904 ntdll.dll, KERNEL32.DLL, KERNELBASE.dll,
                                   ADVAPI32.dll, msvcrt.dll, sechost.dll,
                                   RPCRT4.dll, USER32.dll, win32u.dll,
                                   GDI32.dll, gdi32full.dll, OLEAUT32.dll,
                                   msvcp_win.dll, ucrtbase.dll, combase.dll,
                                   bcryptPrimitives.dll, WS2_32.dll,
                                   SHLWAPI.dll, MPR.dll, VERSION.dll,
                                   framedynos.dll, dbghelp.dll, SspiCli.dll,
                                   srvcli.dll, netutils.dll, IMM32.DLL,
                                   kernel.appcore.dll, clbcatq.dll,
                                   wbemprox.dll, wbemcomn.dll, bcrypt.dll,
                                   Winsta.dll, wbemsvc.dll, fastprox.dll,
                                   wmiutils.dll
WmiPrvSE.exe                  9500 N/A

on peut aussi chercher une ddl ou un lot de dll:

TASKLIST /M sys* Nom de l’image PID Modules ========================= ======== ============================================ svchost.exe 8580 SystemEventsBrokerClient.dll explorer.exe 10132 SystemEventsBrokerClient.dll, System.ni.dll, System.Core.ni.dll, System.Configuration.ni.dll, System.Xml.ni.dll, System.Drawing.ni.dll, System.Windows.Forms.ni.dll SearchUI.exe 4376 SystemEventsBrokerClient.dll WDAppManager.exe 10888 System.ni.dll, System.Core.ni.dll, System.Xaml.ni.dll, System.Configuration.ni.dll, System.Xml.ni.dll, System.Drawing.ni.dll, System.Windows.Forms.ni.dll, System.ComponentModel.Composition.ni.dll, System.Runtime.Serialization.ni.dll, System.ServiceModel.Internals.ni.dll AsusWSPanel.exe 8880 System.ni.dll, System.Core.ni.dll, System.Drawing.ni.dll, System.Windows.Forms.ni.dll, System.Configuration.ni.dll, System.Xml.ni.dll

14.4. Comment lister les processus dans un fichier csv?
tasklist /v /FO CSV
"Nom de l’image","PID","Nom de la session","Numéro de session","Utilisation mémoire","État","Nom d’utilisateur","Temps processeur","Titre de la fenêtre"
"System Idle Process","0","Services","0","4 Ko","Unknown","AUTORITE NT\Système","3:40:13","N/A"
"System","4","Services","0","7 448 Ko","Unknown","N/A","0:06:04","N/A"
"smss.exe","336","Services","0","956 Ko","Unknown","N/A","0:00:00","N/A"
"csrss.exe","524","Services","0","4 388 Ko","Unknown","N/A","0:00:06","N/A"


14.5. Comment tuer un processus à partir de son nom?
taskkill /IM notepad.exe
Opération réussie : un signal de fin a été envoyé au processus "notepad.exe" de PID 8852.
Opération réussie : un signal de fin a été envoyé au processus "notepad.exe" de PID 5488.
Opération réussie : un signal de fin a été envoyé au processus "notepad.exe" de PID 9108.

On peut forcer le kill en utilisant l'option /F.

14.6. Comment tuer un processus à partir de son PID?
taskkill /PID 5544
Opération réussie : un signal de fin a été envoyé au processus de PID 5544.

Si on veut aussi supprimer tous les enfants qu'il a généré, il faut ajouter l'option /T.

On peut aussi supprimer plusieurs processus (avec ou sans l'option /T à la fin:

taskkill /PID 5544 /PID 5548 /PID 5655 /T



15. reseau

15.1. comment afficher son adresse IP
ipconfig

Configuration IP de Windows


Carte Ethernet Connexion au réseau local:

        Suffixe DNS propre à la connexion : batman.mydomain
        Adresse IP. . . . . . . . . . . . : 192.168.248.126
        Masque de sous-réseau . . . . . . : 255.255.0.0
        Passerelle par défaut . . . . . . : 192.168.248.250

Si on veut etre plus precis:

ipconfig | findstr Adress
        Adresse IP. . . . . . . . .á. . . : 192.168.248.126

note: Adress fonctionne aussi quand on est en langue anglaise.

Si on désire plus de détail :

D:\outils\faq\dos>ipconfig /all

Configuration IP de Windows

        Nom de l'hôte . . . . . . . . . . : batman
        Suffixe DNS principal . . . . . . : mydomain
        Type de noud . . . . . . . . . . : Inconnu
        Routage IP activé . . . . . . . . : Non
        Proxy WINS activé . . . . . . . . : Non
        Liste de recherche du suffixe DNS : mydomain
                                            

Carte Ethernet Connexion au réseau local:

        Suffixe DNS propre à la connexion : mydomain
        Description . . . . . . . . . . . : Broadcom NetXtreme Gigabit Etherne
        Adresse physique . . . . . . . . .: D0-27-88-07-52-5C
        DHCP activé. . . . . . . . . . . : Oui
        Configuration automatique activée . . . . : Oui
        Adresse IP. . . . . . . . . . . . : 192.168.248.126
        Masque de sous-réseau . . . . . . : 255.255.0.0
        Passerelle par défaut . . . . . . : 192.168.248.250
        Serveur DHCP. . . . . . . . . . . : 192.168.7.34
        Serveurs DNS . . . . . . . . . .  : 192.168.7.1
                                            192.168.7.2
        Bail obtenu . . . . . . . . . . . : mardi 31 janvier 2012 08:46:00
        Bail expirant . . . . . . . . . . : mardi 7 février 2012 08:46:00


15.2. comment afficher les routes?
D:\outils\faq\dos>route print
===========================================================================
Liste d'Interfaces
0x1 ........................... MS TCP Loopback interface
0x2 ...d0 27 88 07 52 5c ...... Broadcom NetXtreme Gigabit Ethernet - Miniport
'ordonnancement de paquets
===========================================================================
===========================================================================
Itinéraires actifs :
Destination réseau    Masque réseau  Adr. passerelle   Adr. interface Métrique
          0.0.0.0          0.0.0.0 192.168.248.250 192.168.248.126      20
        127.0.0.0        255.0.0.0       127.0.0.1       127.0.0.1      1
      192.168.0.0      255.255.0.0 192.168.248.126 192.168.248.126      20
  192.168.248.126  255.255.255.255       127.0.0.1       127.0.0.1      20
  192.168.255.255  255.255.255.255 192.168.248.126 192.168.248.126      20
        224.0.0.0        240.0.0.0 192.168.248.126 192.168.248.126      20
  255.255.255.255  255.255.255.255 192.168.248.126 192.168.248.126      1
Passerelle par défaut :  192.168.248.250
===========================================================================
Itinéraires persistants :
  Aucun


15.3. comment connaitre les serveurs du réseau?
net view
Nom de serveur         Remarque

-----------------------------------------------------
\\SERVER1             Serveur Site
\\ORDI003
\\ORDI572
\\ORDI573



16. batch

16.1. comment afficher un commentaire?
Utilisez REM ou ::

16.2. comment entrer une valeur dans une variable à partir d'une entrée en ligne de commande?
@echo off
set /p FILENAME=Enter the filename to copy to USB media on the E: drive:

if not defined FILENAME goto error_no_file
if not exist %FILENAME% goto error_not_exist

copy %FILENAME% e:\%FILENAME%

pause
exit

:error_no_file
echo You did not enter a filename. This program will now exit.
pause
exit

:error_not_exist

echo The filename you entered %FILENAME% does not exist. This program will now exit.
pause
exit


16.3. Comment ajouter temporairement un chemin au PATH dans un batch?
Utiliser set comme ceci:
set Path=%Path%;c:\usr\bin



Copyright (c) 2006-2012 Jean-Louis BICQUELET

This list of questions and answers was generated by makefaq.