Logoff, Quser, Qwinsta, Rwinsta

Query the Remote Server for Current Terminal Sessions

To query and list the sessions on the remote session, you could use QUser.exe or QWinsta

1. QUser

QUser command comes with all the latest Windows clients and servers. This will list the sessions of the remote server (or local machine).

NOTE: if you are using Windows XP, you need to add this location into your System path: C:WindowsSystem32DLLCache. To do this, in command prompt, type the following.

SET PATH = %PATH%;C:WindowsSystem32DLLCache;

QUser help shows,

C:Anand>QUser /?
Display information about users logged on to the system.

QUERY USER [username | sessionname | sessionid] [/SERVER:servername]

username Identifies the username.
sessionname Identifies the session named sessionname.
sessionid Identifies the session with ID sessionid.
/SERVER:servername The server to be queried (default is current).

E.g.,

C:>quser /server:MyCitrixSVR
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
johndoe ica-tcp#966 10 Active 7 7/31/2008 3:04 PM
averagejoe ica-tcp#969 1 Active 9 7/31/2008 3:30 PM
familyman ica-tcp#984 5 Active 1:06 7/31/2008 4:33 PM
normaldude ica-tcp#987 2 Active 4 7/31/2008 6:20 PM

2. QWinsta

QWinsta is little different and better. It has more features and options. It comes with all flavors of Windows. QWinsta command line help displays as,

C:>qwinsta /?
Display information about Terminal Sessions.

QUERY SESSION [sessionname | username | sessionid]
[/SERVER:servername] [/MODE] [/FLOW] [/CONNECT] [/COUNTER]

sessionname Identifies the session named sessionname.
username Identifies the session with user username.
sessionid Identifies the session with ID sessionid.
/SERVER:servername The server to be queried (default is current).
/MODE Display current line settings.
/FLOW Display current flow control settings.
/CONNECT Display current connect settings.
/COUNTER Display current Terminal Services counters information.

E.g.,

C:>qwinsta /server:citrixserver
SESSIONNAME USERNAME ID STATE TYPE DEVICE
0 Disc rdpwd
ica-tcp 65536 Listen wdica
rdp-tcp 65537 Listen rdpwd
console 16 Conn wdcon
ica-tcp#966 johndoe 10 Active wdica
ica-tcp#969 apple 1 Active wdica
ica-tcp#984 averagejoe 5 Active wdica
ica-tcp#987 familyman 2 Active wdica
ica-tcp#989 whoisme 3 Active wdica

You are welcome to try the other options QWinsta provides.

Logoff the Remote Sessions

To Log off the terminal session of the remote server, you can use any one of two command line tools. One of LOGOFF and another one is RWINSTA. Before you log off the remote session, you should know the « Session ID » which you get it from « QUSER » OR « QWINSTA » commands as above stated.

1. Logoff

Logoff command kicks off (logging off) the specified remote session. Log off help shows,

C:>logoff /?
Terminates a session.

LOGOFF [sessionname | sessionid] [/SERVER:servername] [/V]

sessionname The name of the session.
sessionid The ID of the session.
/SERVER:servername Specifies the Terminal server containing the user
session to log off (default is current).
/V Displays information about the actions performed.

E.g.,

C:>logoff /server:infra-apps 1 /v
Logging off session ID 1

2. RWinsta

RWinsta has same parameters and does same thing as log off command. It simply means Reset WINdows STAtion. The help goes as,

C:>RWinsta /?
Reset the session subsytem hardware and software to known initial values.

RESET SESSION {sessionname | sessionid} [/SERVER:servername] [/V]

sessionname Identifies the session with name sessionname.
sessionid Identifies the session with ID sessionid.
/SERVER:servername The server containing the session (default is current).
/V Display additional information.

E.g.,

C:>RWinsta /Server:MyWinServer 1

Note: RWinsta command does not return anything.

Happy Re-setting the remote sessions (Hey, stop cursing your co-workers who didn’t log off their sessions).

Keywords: Reset remote session, Remote Desktop Session

Liste de fichiers non vide

for %i in (*.txt) do if "%~zi" geq "1" echo %~nxzi > liste.txt
 for /R "c:\Windows" %i in (*.txt) do if "%~zi" geq "1" echo %~nxzi
EQU Égal à
 NEQ Différent de
 LSS Inférieur à
 LEQ Inférieur ou égal à
 GTR Supérieur à
 GEQ Supérieur ou égal à
@Echo Off
 setlocal ENABLEDELAYEDEXPANSION
 Set P1=0
 Set Dossier=%1
 For /R %Dossier% %%I In (*.*) Do Set /A P1=!P1!+%%~ZI/1048
 Echo Le dossier %Dossier% contient %P1% Koctets
De plus, la substitution de références de variables FOR a été améliorée.
Vous pouvez maintenant utiliser la syntaxe optionnelle suivante :
%~I - étend %I en supprimant les guillemets (")
%~fI - étend %I en nom de chemin d'accès reconnu
%~dI - étend %I en lettre de lecteur uniquement
%~pI - étend %I en chemin d'accès uniquement
%~nI - étend %I en nom de fichier uniquement
%~xI - étend %I en extension de fichier uniquement
%~sI - chemin étendu contenant uniquement des noms courts
%~aI - étend %I en attributs du fichier
%~tI - étend %I en date/heure du fichier
%~zI - étend %I en taille du fichier
%~$PATH:I - parcourt les répertoires de la variable
d'environnement PATH et étend %I en nom du
premier fichier reconnu trouvé. Si le nom de la
variable d'environnement n'est pas défini ou
que le fichier n'est pas trouvé par la recherche,
alors ce modificateur étend en chaîne vide
Vous pouvez combiner les modificateurs pour obtenir des résultats composés :
%~dpI - étend %I en lettre de lecteur et chemin d'accès uniquement
%~nxI - étend %I en nom de fichier et extension uniquement
%~fsI - étend %I en nom de chemin complet avec noms courts
uniquement
%~dp$PATH:i - parcourt les répertoires listés dans la variable
d'environnement PATH à la recherche de %I et étend
en lettre de lecteur du premier trouvé.
%~ftzaI - étend %I en DIR comme ligne en sortie
Dans les exemples ci-dessus %I et PATH peuvent être remplacés par d'autres valeurs valides. La syntaxe %~ se termine par un nom de variable FOR valide. Le choix de noms de variables en majuscules comme %I facilite la lecture et empêche toute confusion avec les modificateurs qui ne tiennent pas compte de la casse.
rem --------------------------------------------
rem ce script rechercher les fichiers non vide 
rem   pour un type (extension) donné
rem   dans une directorie donné
rem --------------------------------------------

@Echo Off 

echo extension : %1
echo dossier : %2

setlocal ENABLEDELAYEDEXPANSION 

set /A P1=0 
set fic=%1
set dossier=%2

echo Nettoyage des ERR_NOCONN

for /R %dossier% %%i in (%fic%) do if "%%~zi" geq "1" (
rem echo %%~nxi 
type "%dossier%%%~nxi" |findstr /V "ERR_NOCONN" > "%dossier%%%~nxi_old"
move "%dossier%%%~nxi_old" "%dossier%%%~nxi" 1> nul)

echo Recherche des fichiers non_vide

for /R %dossier% %%i in (%fic%) do if "%%~zi" geq "1" (
echo %%~nxi 
type %dossier%%%~nxi 
echo.
set /A P1=!P1!+1 )

echo Il y a !P1! fichiers non vide

set /A nb_fic=!P1!

if %nb_fic% equ 0 goto TERMINE
goto ERREUR

:ERREUR
Echo "il y a !P1! Pb sur ces serveurs"

:TERMINE
exit /b %nb_fic%

Fonction Rtrim() en DOS

@echo off
:debut
 set /p w_serv= Chaine ?
echo."%w_serv%"
setlocal enableDelayedExpansion
set VrCompt=-1
 :boucle
 set /a VrCompt+=1
 set test2=!w_serv:~%VrCompt%,1!
 if not "%test2%"=="" goto boucle
for /l %%a in (1,1,%VrCompt%) do (
 if "!w_serv:~-1!"==" " set w_serv=!w_serv:~0,-1!
 )
echo."!w_serv!"
set /p w_quit= (R)ecommencer, (Q)uit ?
 if "%w_quit%"=="R" goto debut

Fonction Len() en DOS

@echo off

:debut
set fic_long_car=c:\temp\fic_long_car.txt

set /p w_serv= Chaine ?

echo. »%w_serv% »

:: Ecrit dans le fichier TEXTE.TXT
ECHO %w_serv%>%fic_long_car%

:: Soustrait à la taille du fichier TEXTE.TXT 2
FOR %%A IN (%fic_long_car%) DO SET /A CHAR=%%~zA-2

:: Supprime TEXTE.TXT
rem DEL /Q %fic_long_car% 2>NUL >NUL

:: Saute une ligne; Affiche le nombre de caractères; Saute une ligne
ECHO. &ECHO Nombre de caractŠres dans le fichier %fic_long_car%: %CHAR% &ECHO.

set /p w_quit= (R)ecommencer, (Q)uit ?
if « %w_quit% »== »R » goto debut

Dernier dossier d’un chemin

setlocal ENABLEDELAYEDEXPANSION
set wdos=%1
rem echo %wdos%
for /F « delims= » %%i in (‘echo %wdos%’) do set folder=%%~ni
echo 1 %folder%

pour wdos=G:\AAA\BBB\CCC\DDD

on veut DDD

——————————————————–

setlocal ENABLEDELAYEDEXPANSION

set wdos=%1

for /F « delims= » %%i in (‘echo %wdos%’) do set folder=%%~ni

echo %folder%

for /F « delims= » %%i in (‘echo %wdos%’) do set chemin=%%~pi

echo %chemin%

——————————————————–

Date et heure dans un nom de fichier

Date seule :

set nom_fic=log_%date:~6,4%-%date:~3,2%-%date:~0,2%.txt
echo %nom_fic%
log_2012-05-04.txt

ou

set nom_fic=log_%date:/=-%.txt
echo %nom_fic%
log_04-05-2012.txt

Date et heure:

for /F « tokens=1-10 delims=: » %i in (‘echo %time:~0,8%:%date:/=:%’) do set nom_fic=log_%l-%m-%n_%ih%jm%ks.txt

echo %nom_fic%
log_04-05-2012_9h02m01s.txt

for /F « tokens=1-10 delims=: » %i in (‘echo %time:~0,8%:%date:/=:%’) do set nom_fic=log_%n-%m-%l_%ih%jm%ks.txt

echo %nom_fic%
log_2012-05-04_9h02m01s.txt

Commandes telnet

telnet serveur port

ex : telnet 10.20.112.34 30004

On entre dans la fenetre telnet

Bienvenue dans le client Telnet Microsoft
Le caractère d’échappement est ‘CTRL+$’
Microsoft Telnet> quit

Bienvenue dans le client Telnet Microsoft

Le caractère d’échappement est ‘CTRL+$

Microsoft Telnet> quit

Commandes remote sous Windows

rem EF 21-12-2011
shutdown /m \\porcinet /r /t 3 /c « Redemarrage hebdomadaire » /f /d p:4:1

Test et relance d’un service 

set w_service=AbsyssBatchManager

set w_status=RUNNING

set w_mode=start

sc query « %w_service% » | find « %w_status% »

if %errorlevel% EQU 0 (

  echo « Le service %w_service% est  %w_status%. »

) ELSE (

  echo « Le service %w_service% n est  pas %w_status%. »

  sc query « %w_service% »

  net %w_mode% « %w_service% »

)

shutdown

shutdown /m \\porcinet /r /t 3 /c « Redemarrage hebdomadaire » /f /d p:4:1

/m \\nom_ordinateur Ordinateur distant à mettre hors tension/redémarrer/annuler
/r Met l’ordinateur hors tension et le redémarre
/t xx Définir le délai d’expiration pour la mise hors tension à xx secondes
/c « commentaire » Commentaire de la mise hors tension (maximum de 127 caractères)
/f Force des applications en cours d’exécution à se fermer sans avertissement
/d [u][p]:xx:yy Le code de raison de la mise hors tension
u est le code utilisateur
p est un code de mise hors tension planifié
xx est le code de raison majeur (valeur entière inférieure à 256)
yy est le code de raison mineur (valeur entière positive inférieure à 65536)

/s Met l’ordinateur hors tension

SC

sc \\star stop « NTP Software QFS Service »

sc \\eve start « NTP Software QFS Service »

DESCRIPTION :

SC est un utilitaire de ligne de commande utilisé pour

communiquer avec le Gestionnaire de contrôle des services et les

services.

UTILISATION :

sc [commande] [nom service] …
L’option se présente au format « \\NomServeur »
Pour obtenir de l’aide sur une commande, entrez : « sc [commande] »
Commandes :
query———– Interroge l’état d’un service ou énumère l’état de types de services.
queryex———Interroge l’état étendu d’un service ou énumère l’état de types de services.
start———–Démarre un service.
pause———–Envoie une demande de contrôle PAUSE à un service.
interrogate—–Envoie une demande de contrôle INTERROGATE à un service.
continue——–Envoie une demande de contrôle CONTINUE à un service.
stop————Envoie une demande STOP à un service.
config———-Modifie la configuration d’un service (persistant).
description—–Modifie la description d’un service.
failure———Modifie les actions entreprises par un service en cas d’échec.
failureflag—–Modifie l’indicateur des actions d’échec d’un service.
sidtype———Modifie le type de SID d’un service.
privs———–Modifie les privilèges nécessaires d’un service.
qc————– Interroge les informations de configuration d’un service.
qdescription—-Interroge la description d’un service.
qfailure——–Interroge les actions entreprises par un service en cas d’échec.
qfailureflag—-Interroge l’indicateur des actions d’échec d’un service.
qsidtype——–Interroge le type de SID d’un service.
qprivs———-Interroge les privilèges nécessaires d’un service.
delete———-Supprime un service (du Registre).
create———-Crée un service (en l’ajoutant au Registre).
control———Envoie un contrôle à un service.
sdshow———-Affiche le descripteur de sécurité d’un service.
sdset———–Définit le descripteur de sécurité d’un service.
showsid———Affiche la chaîne du SID de service correspondant à un nom arbitraire.
GetDisplayName–Récupère le nom affiché d’un service.
GetKeyName——Récupère le nom de clé d’un service.
EnumDepend——Énumère les dépendances d’un service.

Les commandes suivantes ne nécessitent pas de nom de service :

sc

boot————(ok | bad) Indique si le dernier démarrage doit être enregistré comme la dernière configuration valide connue
Lock————Verrouille la base de données des services
QueryLock——-Interroge l’état de verrouillage d’une base de données du Gestionnaire de contrôle des services

EXEMPLE :

sc start MonService

OPTIONS QUERY et QUERYEX :

Si la commande query est suivie d’un nom de service, l’état de ce service est renvoyé, d’autres options ne s’appliquant pas dans ce cas. Si la commande query est utilisée seule ou suivie de l’une des options listées ci-dessous, les services sont énumérés.

type= Type des services à énumérer (driver, service, all). (par défaut = service)
state= État des services à énumérer (inactive, all). (par défaut = active)
bufsize= Taille (en octets) du tampon d’énumération (par défaut = 4096)
ri= Numéro d’index de reprise auquel doit commencer l’énumération\n » (par défaut = 0)
group= Groupe de services à énumérer. (par défaut = tous les groupes)

EXEMPLES DE SYNTAXE

sc query – Énumère l’état des services et pilotes actifs.

sc query eventlog – Affiche l’état du service Affichage des messages.

sc queryex eventlog – Affiche l’état étendu du service Affichage des messages.

sc query type= driver – Énumère uniquement les pilotes actifs.

sc query type= service – Énumère uniquement les services Win32.

sc query state= all – Énumère tous les services et pilotes.

sc query bufsize= 50 – Utilise un tampon d’une taille de 50 octets pour l’énumération.

sc query ri= 14 – Utilise le numéro d’index de reprise 14 pour l’énumération.

sc queryex group= «  » – Énumère les services actifs n’appartenant pas à un groupe.

sc query type= interact – Énumère tous les services interactifs.

sc query type= driver group= NDIS – Énumère tous les services NDIS.

Boucle de lecture fichier ligne à ligne + traitement

echo off
SETLOCAL ENABLEDELAYEDEXPANSION
echo ABEL >serveur.txt
echo ABELARD >>serveur.txt
echo ARAGORN >>serveur.txt
echo ARTHUR >>serveur.txt
echo ARWEN >>serveur.txt
echo CAMILLA >>serveur.txt
echo CHEER >>serveur.txt
echo CLEOPATRE >>serveur.txt
echo COLOMBINE >>serveur.txt
echo GUENIEVRE >>serveur.txt
echo HELOISE >>serveur.txt
echo HUMPHREY >>serveur.txt
echo LANCELOT >>serveur.txt
echo LAUREN >>serveur.txt
echo SACCO >>serveur.txt
echo VANZETTI >>serveur.txt
for /f %%i in (serveur.txt) do (
echo serveur : %%i
set source= »\\Bill\F$\FYDEV\image_serveur_prod\Fywebapp
set cible= »\\%%i\k$\profil\standard\MENUDM~1\MTIER~1″
echo source : !source!
echo cible : !cible!
rem copy /Y !source!\Base AE.url » !cible!
dir !cible!\ »Base AE* »
echo *******************************************
)

echo off

SETLOCAL ENABLEDELAYEDEXPANSION

echo ABEL >serveur.txt

echo ABELARD >>serveur.txt

echo ARAGORN >>serveur.txt

echo ARTHUR >>serveur.txt

echo ARWEN >>serveur.txt

echo CAMILLA >>serveur.txt

echo CHEER >>serveur.txt

echo CLEOPATRE >>serveur.txt

echo COLOMBINE >>serveur.txt

echo GUENIEVRE >>serveur.txt

echo HELOISE >>serveur.txt

echo HUMPHREY >>serveur.txt

echo LANCELOT >>serveur.txt

echo LAUREN >>serveur.txt

echo SACCO >>serveur.txt

echo VANZETTI >>serveur.txt

for /f %%i in (serveur.txt) do (

echo serveur : %%i

set source= »\\Bill\F$\FYDEV\image_serveur_prod\Fywebapp

set cible= »\\%%i\k$\profil\standard\MENUDM~1\MTIER~1″

echo source : !source!

echo cible : !cible!

rem copy /Y !source!\Base AE.url » !cible!

dir !cible!\ »Base AE* »

echo *******************************************

)

Aide robocopy

Codes retours ROBOCOPY

valeur Description
0 Aucun fichier n’a été copié. Aucune erreur s’est produite.
Aucun fichier n’a été incohérents. Les fichiers existent déjà dans le répertoire de destination ; par conséquent, l’opération de copie a été ignorée.
1 Tous les fichiers ont été copiés avec succès.
2 Il y a des fichiers supplémentaires dans le répertoire de destination ne sont pas présents dans le répertoire source. Aucun fichier n’a été copié.
3 Certains fichiers ont été copiés. Des fichiers supplémentaires étaient présents. Aucune erreur s’est produite.
5 Certains fichiers ont été copiés. Certains fichiers ont été incohérents. Aucune erreur s’est produite.
6 Des fichiers supplémentaires et des fichiers incompatibles existent. Aucun fichier n’a été copié et aucun échecs ont été rencontrées. Cela signifie que les fichiers existent déjà dans le répertoire de destination.
7 Fichiers ont été copiés, une incompatibilité de fichier n’a pas présente et des fichiers supplémentaires ont été présentes.
8 Plusieurs fichiers n’ont pas été copiés.

Robocopy est plutôt fait pour copier des dossiers. On peut cependant copier un fichier. Exemple :
robocopy source cible\ rapport.docx
On pourra utiliser des caractères génériques (? pour des caractères, ou * pour une zone). Exemple :
robocopy source cible\ rapport*.doc?

Noter l’utilisation de l’anti-slash (barre oblique inverse \ ) à la fin du nom du dossier cible.
De cette façon robocopy ne demande pas de lever le doute entre fichier ou dossier, et il crée le dossier s’il n’existe pas.

Sauvegarde via le réseau :
robocopy \\PCXP\Dossier \\PC98\Dossier /MIR /R:0 /W:0
La commande s’utilisera depuis la machine nommée « PCXP » car robocopy ne fonctionne pas avec Windows98.

/MIR
Faire très attention avec le commutateur /MIR (miroir). Si un fichier n’existe pas dans la source, il est supprimé dans la cible. Une inversion ou une erreur de cible peut-être catastrophique. /MIR inclue /E et /PURGE (purge des fichiers absents)

/E
Ce commutateur est utilisé pour copier également les dossiers vides sans /PURGE. On pourra commencer avec /E au lieu de /MIR pour les premiers tests.

/L
Ce commutateur génère une Liste au lieu de faire la copie. Il permet donc de faire les premiers tests sans risque.

Sauvegarder le disque D: sur le disque S:
robocopy D: S: /MIR /R:0 /W:0
Robocopy ne s’arrête pas sur une erreur de fichier :
R = nombres d’essais après échec (1 million par défaut). En pratique souvent 1 ou 0.
W = temps d’attente entre essais (30s par défaut). En pratique souvent 1 ou 0.

Écrire le nom du dossier de destination avec un anti-slash final afin de préciser à robocopy qu’il s’agit bien d’un répertoire. Sinon, au cas où le dossier n’existe pas, robocopy demandera si c’est un fichier ou un dossier, et le processus sera stoppé.
Exemple: Sauvegarde\

On peut arrêter robocopy à tout instant avec CTL+C.

/MIR fait une copie miroir et supprime donc dans la cible les fichiers qui n’existent plus dans la source. Faire très attention de ne pas se tromper ! Surtout ne pas inverser source et cible !

Il est recommandé d’utiliser un batch explicitant les opérations. On diminue ainsi le risque d’erreur :
=======================================================================
@echo off>nul
set source=source
set cible=cible
echo robocopy %source% %cible% /MIR
set /p question=Pour confirmer entrer OUI, L pour le mode List :
if /i « %question% »== »OUI » goto :vazy
echo Vous n’avez pas repondu OUI :
if /i « %question% »== »L » goto :liste
goto :end
:liste
echo MODE LISTE : AUCUNE COPIE AUCUNE SUPPRESSION
set liste=^/L
:vazy
robocopy %source% %cible% /MIR /w:1 /r:1 %liste%
goto :end
:end
if /i « %question% »== »L » echo FIN DU MODE LIST (AUCUNE COPIE AUCUNE SUPPRESSION)
start %source% && start %cible%
echo Fin du batch
pause
goto :eof
=======================================================================

/L permet de simuler une copie (List only). Pratique pour tester, mais aussi pour récupérer des informations.

/SECFIX
Comment faire pour copier des informations sur la sécurité sans copier de données de fichier
http://support.microsoft.com/kb/323275

Aides :
robocopy /?
http://mclaveau.com/gvrac/robo.html
http://technet.microsoft.com/en-us/library/cc772390.aspx
http://technet.microsoft.com/en-us/library/cc733145.aspx

Il est souvent demandé comment copier des fichiers sans changer leurs dates.
Robocopy est la réponse :
– Copie de tous les fichiers sans changement des attributs
– Copie de tous les fichiers sans changements des dates
– Copie d’arborescences complètes mêmes avec dossiers vides
– Occupation processeur très faible
– Copie rapide : 18 mn pour 45 Gio en 56793 dossiers et fichiers
– Fonctionne très bien en tâche de fond (On peut faire autre chose)
– Très léger et autonome : 80 kio
– Nombreuses options (robocopy /? pour les voir)
– Syntaxe très simple
– Peut utiliser des fichiers de commande

Utilisation de robocopy par Michel Claveau pour sauver %userprofile% avec Robocopy XP010
http://groups.google.com/group/microsoft.public.fr.windows.vista.general/msg/4fedc52f6cb4b1bb
robocopy « %USERPROFILE% » « %DEST% » /XJ /XD « %USERPROFILE%\AppData\Local\Microsoft\Windows Mail\Backup » « %USERPROFILE%\AppData\Local\Microsoft\Windows\Temporary Internet Files » « %USERPROFILE%\AppData\Local\Temp » « %USERPROFILE%\AppData\Local\Microsoft\Windows Live\Services\Cache » /MIR /FFT /S /COPYALL /R:1 /W:1 /ETA /NFL

/XJ permet de ne pas copier les junctions
/XD eXclure de la copie les Dossiers indiqués (inutile de copier les temporaires et assimilés)
/MIR pour Miroir
/FFT Assume FAT File Times (2-second granularity). Useful for copying to third-party systems that declare a volume to be NTFS but only implement file times with a 2-second granularity.
/S process the entire directory tree, including subdirectories
/COPYALL :: copie toutes les infos de fichier (équivaut à /COPY:DATSOU).
/R:1 /W:1 En cas de loupé (fichier occupé) : on attend une seconde et on tente encore seule une fois (valeurs par défaut : 1 000 000 d’essais avec attentes de 30 secondes !)
/ETA :: affiche l’heure de fin estimée de la copie des fichiers.
/NFL :: pas de liste de fichiers : n’enregistre pas les noms de fichiers.

L’exemple suivant montre comment décomposer la commande dans un batch.
Les @ servent à masquer la commande à l’exécution pour une meilleure lecture.
On pourrait utiliser la commande @echo off mais cette façon de faire permet de choisir plus facilement les commandes à afficher en retirant l’arobasse @.
====================================================================
Sauvegarde du disque D vers le disque D d’un PC tartempion du réseau.
On ne recopie pas les Corbeilles XP/Vista
@set source=d:
@set pc=tartempion
@set cible=\\%pc%\d:
@start %source%
@start %cible%
@echo Recopie de %source% vers %cible%
@pause
robocopy « %source% » « %cible% » /XD recycler $RECYCLE.BIN /MIR /FFT /S /COPYALL /R:1 /W:1 /ETA /NFL
@pause>nul
====================================================================

D’autres idées d’utilisation
http://groups.google.com/group/microsoft.public.fr.scripting/browse_frm/thread/5ee8d78951db0076/

Alternatives to the Directory Replicator Service
http://support.microsoft.com/kb/160513/en

http://blogs.technet.com/deploymentguys/archive/2008/06/16/robocopy-exit-codes.aspx

Aide de Robocopy

Version XP010 pour Windows XP
Microsoft Robocopy GUI copie dans son dossier d’installation une aide détaillée de Robocopy :
http://fspsa.free.fr/robocopy-xp010.pdf

Version XPO27 pour Vista
Windows\system32\Robocopy.exe
L’aide ci-dessous est celle obtenue depuis cette version.
Il y a des petites différences par rapport à la version XP010, plus ancienne.
Ne pas utiliser la Version Vista avec XP (ne marchera pas).
Pour info il existe une version XP026

Comment régler les Propriétés d’une Console de Commandes et copier le contenu

G:\>robocopy /?

——————————————————————————-
ROBOCOPY :: Copie de fichiers robuste pour Windows
——————————————————————————-

Début : Sat Oct 03 16:49:35 2009

Utilisation :: ROBOCOPY source destination [fichier [fichier]…] [options]

source :: répertoire source (lecteur:\chemin ou \\serveur\partage\chemin).
destination :: rép. de destination (lecteur:\chemin ou \\serveur\partage\chemin).
fichier :: fichier(s) à copier (noms/caractères génériques : valeur par défaut « *.* »).

::
:: Options de copie :
::
/S :: copie les sous-répertoires non vides uniquement.
/E :: copie les sous-répertoires, y compris les vides.
/LEV:n :: copie uniquement les n premiers niveaux de l’arborescence source.

/Z :: copie les fichiers en mode de redémarrage.
/B :: copie les fichiers en mode de sauvegarde.
/ZB :: utilise le mode de redémarrage ; si l’accès est refusé, utilise le mode de sauvegarde.
/EFSRAW :: copie tous les fichiers chiffrés en mode EFS RAW.

/COPY:indicateur[s]copie :: spécifie les éléments à copier pour les fichiers (/COPY:DAT par défaut).
(indicateurscopie : D=Données, A=Attributs, T=horodaTages).
(S=Sécurité=ACL NTFS, O=infos prOpriétaire, U=infos d’aUdit).

/DCOPY:T :: copie les horodatages de répertoire.

/SEC :: copie des fichiers avec sécurité (équivaut à /COPY:DATS).
/COPYALL :: copie toutes les infos de fichier (équivaut à /COPY:DATSOU).
/NOCOPY :: ne copie aucune info de fichier (utile avec /PURGE).

/SECFIX :: corrige la sécurité de tous les fichiers, même les fichiers ignorés.
/TIMFIX :: corrige les horodatages de tous les fichiers, même les fichiers ignorés.

/PURGE :: supprime les fichiers/répertoires de destination qui n’existent plus dans la source.
/MIR :: met en MIRoir une arborescence (équivaut à /E plus /PURGE).

/MOV :: déplace les fichiers (les supprime de la source après la copie).
/MOVE :: déplace les fichiers ET les répertoires (les supprime de la source après la copie).

/A+:[RASHCNET] :: ajoute les Attributs donnés aux fichiers copiés.
/A-:[RASHCNET] :: supprime les Attributs donnés des fichiers copiés.

/CREATE :: crée une arborescence et des fichiers de longueur nulle uniquement.
/FAT :: crée des fichiers de destination au format de nom 8.3 FAT uniquement.
/256 :: désactive la prise en charge des chemins d’accès très longs (> 256 caractères).

/MON:n :: source du moniteur ; réexécuté lorsque plus de n modifications sont observées.
/MOT:m :: source du moniteur ; réexécuté après m minutes en cas de modification.

/RH:hhmm-hhmm :: heures d’exécution : heures auxquelles de nouvelles copies peuvent être lancées.
/PF :: vérifie les heures d’exécution Par Fichier (et non par passage).

/IPG:n :: délai entre les paquets (ms) pour libérer la bande passante sur les lignes bas débit.

/SL:: copie les liens symboliques par opposition à la cible.
::
:: Options de sélection des fichiers :
::
/A :: copie uniquement les fichiers où l’attribut Archive est défini.
/M :: copie uniquement les fichiers où l’attribut Archive est défini et le réinitialise.
/IA:[RASHCNETO] :: Inclut uniquement les fichiers où l’un des Attributs donnés est défini.
/XA:[RASHCNETO] :: eXclut les fichiers où l’un des Attributs donnés est défini.

/XF fichier [fichier]… :: eXclut les fichiers correspondant aux noms/chemins/caractères génériques donnés.
/XD répertoires [répertoires]… :: eXclut les répertoires correspondant à des noms/chemins donnés.

/XC :: eXclut les fichiers Changés.
/XN :: eXclut les fichiers Nouveaux.
/XO :: eXclut les fichiers anciens.
/XX :: eXclut les fichiers et répertoires supplémentaires.
/XL :: eXclut les fichiers et répertoires solitaires.
/IS :: Inclut les mêmeS fichiers.
/IT :: Inclut les fichiers optimisés.

/MAX:n :: taille de fichier maximale : exclut les fichiers de taille supérieure à n octets.
/MIN:n :: taille de fichier minimale : exclut les fichiers de taille inférieure à n octets.

/MAXAGE:n :: Antériorité maximale du fichier : exclut les fichiers plus anciens que n jours/qu’une date n.
/MINAGE:n :: Antériorité minimale du fichier : exclut les fichiers plus récents que n jours/qu’une date n.
/MAXLAD:n :: dernière date d’accès MAXimale : exclut les fichiers inutilisés depuis n.
/MINLAD:n :: dernière date d’accès MINimale : exclut les fichiers utilisés depuis n.
(si n < 1900, alors n = n jours, sinon n = date JJMMAAA).

/XJ :: eXclut les points de Jonction (normalement inclus par défaut).

/FFT :: suppose des heures de fichier FAT (granularité de 2 secondes).
/DST :: compense les différences d’heure d’été d’une heure.

/XJD :: eXclut les points de Jonction pour les répertoires.
/XJF :: eXclut les points de Jonction pour les Fichiers.

::
:: Options de nouvelle tentative :
::
/R:n :: nombre de tentatives après l’échec de copies : 1 million par défaut.
/W:n :: délai entre les tentatives : 30 secondes par défaut.

/REG :: enregistre /R:n et /W:n comme paramètres par défaut dans le Registre.

/TBD :: attend la détermination des noms de partage (erreur de nouvelle tentative 67).

::
:: Options d’enregistrement dans le journal :
::
/L :: Liste uniquement : pas de copie, d’horodatage ou de suppression de fichiers.
/X :: signale tous les fichiers supplémentaires et pas uniquement ceux sélectionnés.
/V :: produit un résultat détaillé en affichant les fichiers ignorés.
/TS :: inclut les horodaTageS des fichiers sources dans le résultat.
/FP :: inclut le chemin d’accès complet des fichiers dans le résultat.
/BYTES :: affiche les tailles en octets.

/NS :: pas de taille : n’enregistre pas les tailles de fichier.
/NC :: pas de classe : n’enregistre pas les classes de fichier.
/NFL :: pas de liste de fichiers : n’enregistre pas les noms de fichiers.
/NDL :: pas de liste de répertoires : n’enregistre pas les noms de répertoire.

/NP :: pas de compteur de progression : n’affiche pas le % copié.
/ETA :: affiche l’heure de fin estimée de la copie des fichiers.

/LOG:fichier :: copie le statut dans le fichier journal (remplace le journal existant).
/LOG+:fichier :: copie le statut dans le fichier journal (ajoute au journal existant).

/UNILOG:fichier :: copie le statut dans le fichier journal en Unicode (remplace le journal existant).
/UNILOG+:fichier :: copie le statut dans le fichier journal en Unicode (ajoute au journal existant).

/TEE :: résultat dans la fenêtre de la console et dans le fichier journal.

/NJH :: pas d’en-tête de tâche.
/NJS :: pas de résumé de tâche.

/UNICODE :: sortie au format UNICODE.

::
:: Options de tâche :
::
/JOB:NomTâche :: prend les paramètres du fichier de tâche nommé.
/SAVE:NomTâche :: enregistre les paramètres dans le fichier nommé
/QUIT :: arrête après traitement de la ligne de commande (pour afficher les paramètres).
/NOSD :: aucun répertoire source spécifié.
/NODD :: aucun répertoire de destination spécifié.
/IF :: Inclut les fichiers suivants.

G:\>

Boucle de lecture fichier ligne à ligne + traitement

echo off
SETLOCAL ENABLEDELAYEDEXPANSION
echo ABEL >serveur.txt
echo ABELARD >>serveur.txt
echo ARAGORN >>serveur.txt
echo ARTHUR >>serveur.txt
echo ARWEN >>serveur.txt
echo CAMILLA >>serveur.txt
echo CHEER >>serveur.txt
echo CLEOPATRE >>serveur.txt
echo COLOMBINE >>serveur.txt
echo GUENIEVRE >>serveur.txt
echo HELOISE >>serveur.txt
echo HUMPHREY >>serveur.txt
echo LANCELOT >>serveur.txt
echo LAUREN >>serveur.txt
echo SACCO >>serveur.txt
echo VANZETTI >>serveur.txt
for /f %%i in (serveur.txt) do (
echo serveur : %%i
set source= »\\Bill\F$\FYDEV\image_serveur_prod\Fywebapp
set cible= »\\%%i\k$\profil\standard\MENUDM~1\MTIER~1″
echo source : !source!
echo cible : !cible!
rem copy /Y !source!\Base AE.url » !cible!
dir !cible!\ »Base AE* »
echo *******************************************
)

echo off

SETLOCAL ENABLEDELAYEDEXPANSION

echo ABEL >serveur.txt

echo ABELARD >>serveur.txt

echo ARAGORN >>serveur.txt

echo ARTHUR >>serveur.txt

echo ARWEN >>serveur.txt

echo CAMILLA >>serveur.txt

echo CHEER >>serveur.txt

echo CLEOPATRE >>serveur.txt

echo COLOMBINE >>serveur.txt

echo GUENIEVRE >>serveur.txt

echo HELOISE >>serveur.txt

echo HUMPHREY >>serveur.txt

echo LANCELOT >>serveur.txt

echo LAUREN >>serveur.txt

echo SACCO >>serveur.txt

echo VANZETTI >>serveur.txt

for /f %%i in (serveur.txt) do (

echo serveur : %%i

set source= »\\Bill\F$\FYDEV\image_serveur_prod\Fywebapp

set cible= »\\%%i\k$\profil\standard\MENUDM~1\MTIER~1″

echo source : !source!

echo cible : !cible!

rem copy /Y !source!\Base AE.url » !cible!

dir !cible!\ »Base AE* »

echo *******************************************

)