Dos / Batch

Quelques scripts Ms-Dos indispensable

déplacement dans un répertoire d’un autre disque

le plus compliqué

@echo on
cd G:
cd G:\test

la plus rapide

@echo on
pushd G:\test

sauvegarde de fichier

déplacement de fichier dans un répertoire généré à partir de l’heure système

@echo on
for /F "tokens=2,3,4 delims=/ " %%i in ('date /T') do set jour=%%i%%j%%k
for /F "tokens=1,2 delims=: " %%i in ('time /T') do set heure=%%i%%j
set DIRNAME=E:\svg\%jour%%heure%
md %DIRNAME%
move C:\WINNT\Temp\*.xml %DIRNAME%
exit /b 0

envoi de fichier dans une imprimante

boucle qui prend un par un les fichiers xml à traiter

@echo on
for %%a in (*.xml) do copy %%a \\W2KSE08\EComPresentSAPXML

gestion d’un programme en sous programme et gestion des paramètres

cet exemple permet de voir comment ou peut:

  • créer des sous programme
  • gérer des paramètres (ici /silent)
@ECHO off
cd Create_Synchronicity
if "%1" =="/silent" goto silent
goto normal

:normal
MSGBOX.EXE "Synchronisation de votre cle usb\n\nVoulez vous continuer ?" "Synchronisation" OKCANCEL
if errorlevel 1 goto yes
goto fin

:yes
Create_Synchronicity.exe /silent /run MYDOC
Create_Synchronicity.exe /silent /run MECAPACK
Create_Synchronicity.exe /silent /run PASSWORD
Create_Synchronicity.exe /silent /run PROJECT
MSGBOX.EXE "Synchronisation Terminee" "Synchronisation"
goto fin

:silent
Create_Synchronicity.exe /silent /run MYDOC
Create_Synchronicity.exe /silent /run MECAPACK
Create_Synchronicity.exe /silent /run PASSWORD
Create_Synchronicity.exe /silent /run PROJECT
goto fin


:fin
exit

gestion des variables

@echo on
set iss=innosetup.iss
"C:\Program Files\Inno Setup 5\"Compil32.exe /cc %iss%

gestion d’un if

@echo off
set /a counter=0

:numbers
set /a counter=%counter%+1
if %counter% ==100 (goto :eof) else (echo %counter% >> E:\count.txt)
goto :numbers

gestion d’une boucle for

@echo off
for /l %%X in (1,1,99) do (echo %%X >> E:\count.txt)

boucle avec une liste

for %%X in (eenie meenie miney moe) do (echo %%X)

boucle sur les répertoire

for /d %%X in (C:\*) do echo %%X

de façon récursive

for /r C:\photos %%X in (*.jpg) do (echo %%X >> E:\listeJPG.txt)

faire une boucle while

@ECHO OFF
:toto
sleep 10
echo "un tour"
goto toto

gestion d’un liste

@echo on
set liste=innosetup.iss,aboutTiddlyNote.html
for %%a in (%liste%) do (
    echo %%a
)

tester l’existence d’un fichier

@echo on
if exist G:\Create_Synchronicity\tutu.exe goto valid
goto novalid

:valid
echo "le fichier existe"
goto fin

:novalid
echo "le fichier n'existe"
goto fin

:fin
exit

pour tester la non existence .. code-block:: bash

@echo on if not exist G:Create_Synchronicitytutu.exe goto valid

gestion des retours

@echo off
MSGBOX.EXE "This is a sample message.\n\nDo you want to continue ?" "MessageBox Test" YESNOCANCEL
REM MSGBOX.EXE "This is a sample message.\n\nDo you want to continue ?" "MessageBox Test" OKCANCEL
REM MSGBOX.EXE "This is a sample message.\n\nDo you want to continue ?" "MessageBox Test" YESNO
REM MSGBOX.EXE "This is a sample message.\n\nJust click on the button."
eco %errorlevel%
if errorlevel 3 goto NO
if errorlevel 1 goto YES
if errorlevel 2 goto CANCEL
goto fin

:no
echo You don't want to continue.
goto fin
:yes
echo You want to continue.
goto fin
:cancel
echo You don't want to go further.
goto fin
:ok
echo ok
goto fin
:fin
MSGBOX.EXE "You can edit the example.bat to test the syntax."

Exemple de script avec relation utilisateur

@echo off
REM Copyright (c) 2012, EnterpriseDB Corporation.  All rights reserved

REM PostgreSQL server psql runner script for Windows

SET server=localhost
SET /P server="Server [%server%]: "

SET database=postgres
SET /P database="Database [%database%]: "

SET port=5432
SET /P port="Port [%port%]: "

SET username=postgres
SET /P username="Username [%username%]: "

for /f "delims=" %%a in ('chcp ^|find /c "932"') do @ SET CLIENTENCODING_JP=%%a
if "%CLIENTENCODING_JP%"=="1" SET PGCLIENTENCODING=SJIS
if "%CLIENTENCODING_JP%"=="1" SET /P PGCLIENTENCODING="Client Encoding [%PGCLIENTENCODING%]: "

REM Run psql
"C:\Program Files\PostgreSQL\9.2\bin\psql.exe" -h %server% -U %username% -d %database% -p %port%

pause