Batch DOS

Les commandes DOS

Les commandes DOS indispensables

Où si site l'executable ? where ?

C:\>where java
C:\jdk-15\bin\java.exe

Afficher le contenu d'un fichier : "type" (équivalent Windows du "cat" Linux)

type "C:\WINDOWS\win.ini"
C:\>type /?
Affiche le contenu d'un ou plusieurs fichiers texte.

TYPE [lecteur:][chemin]nom_de_fichier

C:\>type comodo.txt
Heur.Dual.Extensions@-1 C:\Program Files (x86)\Copie de PocketPC Installer Professional\PPI.ini.exe
Heur.Suspicious@192646731 C:\WINDOWS\mui\FALLBACK\040c\External\muiwres\wnetsetup.exe.mu_|wnetsetup.exe.mui
Heur.Suspicious@192646429 C:\WINDOWS\mui\FALLBACK\040c\External\muiwres\wrtcshare.exe.mu_|wrtcshare.exe.mui
Heur.Suspicious@192646731 C:\WINDOWS\SysWOW64\mui\040C\netsetup.exe.mui
Heur.Suspicious@192646429 C:\WINDOWS\SysWOW64\mui\040C\rtcshare.exe.mui

Rechercher dans un fichier ou flux : "find" et "findstr" (équivalent Windows du "grep" Linux)

netstat -a -b -n | find "3873"
findstr /C:"3873" server.log > matche.txt
C:\>find /?
Recherche une chaîne de texte dans un ou des fichiers.

FIND [/V] [/C] [/N] [/I][/OFF[LINE]] "chaîne" [[lecteur:]
     [chemin]nom_de_fichier[ ...]]

  /V         Affiche toutes les lignes ne contenant pas la chaîne spécifiée.
  /C         Affiche seulement le nombre de lignes contenant la chaîne.
  /N         Affiche les numéros de ligne avec les lignes affichées.
  /I         Ignore la casse lors de la recherche de la chaîne.
  /OFF[LINE] Ne pas ignorer les fichiers dont l'attribut hors connexion a été
             réglé.
  "chaîne"   Spécifie la chaîne de texte à trouver.
  [lecteur:][chemin]nom_de_fichier
             Spécifie un ou des fichiers pour la recherche.

Sans nom de chemin, FIND recherche le texte entré à l'invite ou redirigé
depuis une autre commande.

C:\>find "net" comodo.txt

---------- COMODO.TXT
Heur.Suspicious@192646731 C:\WINDOWS\mui\FALLBACK\040c\External\muiwres\wnetsetup.exe.mu_|wnetsetup.exe.mui
Heur.Suspicious@192646731 C:\WINDOWS\SysWOW64\mui\040C\netsetup.exe.mui

C:\>type comodo.txt | find "net"
Heur.Suspicious@192646731 C:\WINDOWS\mui\FALLBACK\040c\External\muiwres\wnetsetup.exe.mu_|wnetsetup.exe.mui
Heur.Suspicious@192646731 C:\WINDOWS\SysWOW64\mui\040C\netsetup.exe.mui

Lister tous les fichiers de tous les dossiers en récursif

rem tous les fichiers et dossiers
DIR /-A /-B /-O /-P /-S /-W 

rem uniquement les fichiers (toujours en récursif)
DIR /A:-D /-B /-O /-S /-W

Uptime sous Windows (date du dernier démarrage de votre windows)

net statistics server
C:\Documents and Settings\toto>net statistics server
Statistiques de serveur de \\MONSERVEUR

Statistiques depuis 22/06/2008 23:04

Comme l'indique Afficher l'uptime sous Windows, on peut extraire uniquement la ligne qui nous intéresse :

net statistics server | find "depuis"

Également, on le retrouve affiché dans le Gestionnaire des tâches de Windows (taskmgr), onglet "Performance", "En activité : jour:heure:min:sec"

Script de reboot automatique du serveur : RebootServeur.bat

echo OFF
@echo REBOOT DU SYSTEME EN COURS...
shutdown /r /f /m \\127.0.0.1 /t 100 /c "Reboot hebdomadaire" /d p:0:0
@echo FIN DU SCRIPT

net send * "Le serveur sera redémarré ce week-end. Merci de fermer correctement votre session (Démarrer->Fermer la session) en partant en week-end, et bon week-end."

Le port est utilisé occupé par quel processus application ?

netstat -ano | find ":8080"
tasklist | find "782"

FTP passif (passive) en ligne de commandes : LITERAL PASV

C:\Documents and Settings\toto>ftp ftp.monserveur.net

Connecté à sdsl.monip.fr.
220-Welcome to Pure-FTPd.
220-You are user number 3 of 10 allowed.
220-This is a private system - No anonymous login
220 You will be disconnected after 15 minutes of inactivity.
Utilisateur (sdsl.monip.fr:(none)) : utilisateur
331 User utilisateur OK. Password required
Mot de passe :
230-User utilisateur has group access to:  www
230 OK. Current restricted directory is /
ftp> set passiv
Commande non valide.
ftp> set pasiv
Commande non valide.
ftp> PASV
Commande non valide.
ftp> LITERAL PASV
227 Entering Passive Mode (72,93,35,50,136,86)
ftp> ls
200 PORT command successful
425 Could not open data connection to port 3172: Connection timed out

Processus Windows (Gestionnaire des tâches de Windows)

taskmgr (raccourci clavier : Ctrl+Shift+Esc)

Le gestionnaire des services

services.msc

L'éditeur de configuration système, programmes et services lancés au démarrage

Diagnostiquer les programmes au démarrage de Windows, pourvoir les désactiver, consulter et gérer les services installés sur votre ordinateur, etc..

msconfig

Gestion de l'ordinateur

compmgmt.msc

Gestion des disques

diskmgmt.msc

Ajout /Suppression de programmes en ligne de commande

Appwiz.cpl

La commande type sous Windows est l'équivalent de cat sous Linux

type file1.txt file2.txt >> file3.txt

La commande fc sous Windows est l'équivalent de diff sous Linux

fc /N /L "fichier1.txt" fichier2.txt"

Vous pouvez également utiliser la commande "comp", ou les outils suivants :

La date

echo %DATE%
rem 28/12/2011
echo %TIME%
rem 12:56:33,82
echo %date:~0,2%-%date:~3,2%-%date:~6,4%
rem 28-12-2011
rem la date au format américain :
echo %date:~6,4%-%date:~0,2%-%date:~3,2%
rem 2011-28-12

%date:3,2%-%date:~6,4%

Remplacement de chaines de caractères

Remplacer supprimer les quotes

Supprimer toutes les double quotes

set var=%var:"=%

Les boucles

Boucle FOR

Par exemple une boucle sur la liste de fichiers :

FOR /R
Loop through files (Recurse subfolders)
@echo off

SETLOCAL

set cp=.
set cp=%cp%;.\libs\axis.jar
set cp=%cp%;.\libs\jaxrpc.jar
set cp=%cp%;.\libs\commons-discovery-0.2.jar
set cp=%cp%;.\libs\commons-logging-1.0.4.jar
set cp=%cp%;.\libs\mail.jar
set cp=%cp%;.\libs\activation.jar
set cp=%cp%;.\libs\saaj.jar
set cp=%cp%;.\libs\wsdl4j-1.5.1.jar
set cp=%cp%;.\libs\Placeoweb.jar

rem FOR /R C:\temp\ %%G IN (*.bak) DO echo %%G
FOR /R "C:\fichiersXmlRecus" %%G IN (*.xml) DO (
	echo %%G
	copy %%G "C:\fichiersXmlRecus\fichierCopier"
	java -Dfile.encoding=cp850 -cp %cp% com.placeoweb.XmlFiles

rem Un faut wait/sleep pour attendre 5secondes	
	ping 0.0.0.0 -n 5 > NUL
)

ENDLOCAL

NOTE : si vous utilisez call avec un for n'oubliez pas de quoter les arguments d'appel (pour ne pas perdre le contenu de la ligne après la première colonne selon le séparateur de initial : espace)

FOR /F "delims=" %%G IN (7z.listfiles.test.txt) DO CALL :ZIPER "%%G"

:ZIPER
set nomDuFichierArchive=%1%
set typeArchive=7z
set nomCompletDufichierArchive=%nomDuFichierArchive%.%typeArchive%
echo "Debut de compression de : %nomCompletDufichierArchive%"
7z a -t%typeArchive% %nomCompletDufichierArchive% %nomDuFichierArchive%
echo "Fin de compression du fichier : %nomCompletDufichierArchive%"
GOTO FIN

: FIN

La commande bat sur plusieurs lignes (éclater une longue commande sur 2 lignes ou plus) avec le caractère "^" en fin de ligne

"C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java" -cp .^
;lib\jackson-annotations-2.9.0.jar^
;lib\jackson-core-2.9.5.jar^
;lib\jackson-databind-2.9.5.jar^
 -jar MyJar-1.0.0.jar