Ecrire batch ....sous xp

Fermé
erico258 Messages postés 4 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 26 janvier 2005 - 24 juin 2004 à 10:51
 djest_02 - 17 févr. 2007 à 13:29
bonjour a tous
qui connait la syntaxe sous xp pour ecrire un batch afin de creer
un dossier de facon automatique avec la date du jour
merci a tous
A voir également:

46 réponses

non ca marche toujours pas comme ca mais je vais finir par trouver
Pour le 4° token je croyais que ct le jour "mer." mais je me suis trompé. On est une brele ou on l'est pas
Merci quand meme mais je compte sur le prog en delphi de ShortCut, ca fait plus clean :3
0
ShortCuT Messages postés 419 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 24 avril 2006 87
15 sept. 2004 à 15:32
c'est envoyé sur ton mail , tardivement mais j'ai pas pu mettre la main dessus avant :)
------------------------------
Gwen
0
sidarus Messages postés 387 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 12 avril 2007 112
15 sept. 2004 à 15:52
Suis également preneur :)

~°sidarus°~
0
erico258 Messages postés 4 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 26 janvier 2005 > sidarus Messages postés 387 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 12 avril 2007
26 janv. 2005 à 18:17
Salut sidarus

j ai bien lu ton poste concernant la syntaxe a date- x
mais ja i pas tout saisi tu peux expliquer de facon plus simple comment mettre en place les variable pour créer un répertoire "toto" avec date -1

merci de ton aide
0
Bonjour à tous , j'ai passé pas mal de temps a chercher un batch me recuperant la date -X et ce pour n'importe quel jour de l'année.
J'ai trouvé un batch assez interressant sur un forum englais, je l'ai modifier pour mon usage personnel et je dois dire qu'il fonctionne correctement.
je vous le laisse en copie:

::ce batch recupere les fichiers warcraft du jour -x et les copies dans un repertoire nommé à la date du jour
@echo off
echo .
echo ######################################################
echo Recuperation de la date pour traitement
echo ######################################################
echo .
rem recupere le second mot avec separateur / et l'envoi dans la variable %jour%
for /f "tokens=2-2 delims=/ " %%a in ('date/t') do set jour=%%a
rem recupere le troisieme mot avec separateur / et l'envoi dans la variable %mois%
for /f "tokens=3-3 delims=/ " %%b in ('date/t') do set mois=%%b
rem recupere le quatrieme mot avec separateur / et l'envoi dans la variable %mois%
for /f "tokens=4-4 delims=/ " %%b in ('date/t') do set an=%%b

rem verificaton du jour et du mois en cour et correction ex: pour le 01.12.04 on sauvegarde le 30.11.04

set /A jour=%jour% - 1
set /A mois=%mois% + 0
set /A an=%an% - 2000
if /i %an% LSS 10 set an=0%an%
:encour
if /I %jour% GTR 0 goto DONE
set /A mois=%mois% - 1
echo mois=%mois%
if /i %mois% GTR 0 goto reglej

set /A mois=12
set /A an=%an% - 1

:reglej
if %mois%==1 goto SET31
if %mois%==2 goto LEAPCHK
if %mois%==3 goto SET31
if %mois%==4 goto SET30
if %mois%==5 goto SET31
if %mois%==6 goto SET30
if %mois%==7 goto SET31
if %mois%==8 goto SET31
if %mois%==9 goto SET30
if %mois%==10 goto SET31
if %mois%==11 goto SET30
if %mois%==12 goto SET31
goto ERROR

:SET31
set /A jour=31
goto DONE

:SET30
set /A jour=30
goto DONE

:LEAPCHK
set /A tt=%an% %% 4
if not %tt%==0 goto SET28
set /A tt=%an% %% 100
if not %tt%==0 goto SET29
set /A tt=%an% %% 400
if %tt%==0 goto SET29

:SET28
set /A jour=28
goto DONE

:SET29
set /A jour=29

:DONE
if /i %jour% LSS 10 set jour=0%jour%
if /i %mois% LSS 10 set mois=0%mois%


echo Date : %jour%/%mois%/%an%
echo on

echo ##############################
echo Variable copie et destination
echo ##############################
set copy1="e:\jeux\Warcraft III\maps"
set goto1="e:\jeux\Warcraft III\ranger"
e:
cd %copy1%

:moins1
if exist %goto1%\control\1 goto moins2
echo ##############################
echo copy de fichiers jour -1
echo ##############################
md %goto1%\%an%-%mois%-%jour%\
echo %jour%-%mois%-%an% >> %goto1%\%an%-%mois%-%jour%\%an%-%mois%-%jour%.log
xcopy /d:%mois%-%jour%-%an% /y /f /s %copy1%\*.* %goto1%\%an%-%mois%-%jour%
md %goto1%\control\1\
set /A jour=%jour% - 1
echo Date : %jour%/%mois%/%an%
goto encour

:moins2
if exist %goto1%\control\2 goto moins3
echo ##############################
echo copy de fichiers jour -2
echo ##############################
md %goto1%\%an%-%mois%-%jour%\
echo %jour%-%mois%-%an% >> %goto1%\%an%-%mois%-%jour%\%an%-%mois%-%jour%.log
xcopy /d:%mois%-%jour%-%an% /y /f /s %copy1%\*.* %goto1%\%an%-%mois%-%jour%
md %goto1%\control\2\
set /A jour=%jour% - 1
echo Date : %jour%/%mois%/%an%
goto encour

:moins3
if exist %goto1%\control\3 goto moins4
echo ############################
echo copy de fichiers jour -3
echo ############################
md %goto1%\%an%-%mois%-%jour%\
echo %jour%-%mois%-%an% >> %goto1%\%an%-%mois%-%jour%\%an%-%mois%-%jour%.log
xcopy /d:%mois%-%jour%-%an% /y /f /s %copy1%\*.* %goto1%\%an%-%mois%-%jour%
md %goto1%\control\3\
set /A jour=%jour% - 1
echo Date : %jour%/%mois%/%an%
goto encour

:moins4
::etc...........
0
Pour obtenir un résultat du type

test_22_06_2005

je tape la commande suivante

mkdir test_%date:~5,2%_%date:~8,2%_%date:~11%
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Faire démarrer, exécuter et tapez cmd.
Pour revenir à C:\, taper cd\ . Ensuite taper edit, écrire le fichier et enregistrer sous par ex: heure.bat
Le fichier peut être simplement:
date /t
time /t
pause
0
Ch@oS Messages postés 41 Date d'inscription dimanche 4 décembre 2005 Statut Membre Dernière intervention 25 mars 2006 35
4 févr. 2006 à 08:49
Salut, krysy

"Pour obtenir un résultat du type

test_22_06_2005

je tape la commande suivante

mkdir test_%date:~5,2%_%date:~8,2%_%date:~11%"

Non, c'est pas mieux et je vais vous dire:

MKDIR %USERPROFILE%\Bureau\TEST-%DATE%

Voilà maintenant.
0
Ch@oS Messages postés 41 Date d'inscription dimanche 4 décembre 2005 Statut Membre Dernière intervention 25 mars 2006 35
4 févr. 2006 à 09:39
Salut tout le monde

Moi, je suis programmateur informatique (niveau expert) et je connais le langage batch.
Il y a 120 syntaxes ! Seulement Windows XP ou 2000.
[...]
Désolé pour mon anglais...
Si votre ordinateur est en français et vous devez les déboguer pour fonctionner de votre PC Winmerde.
À respecter (vous devez me respecter).
--------------------------

Clean.cmd
Code:

@ECHO OFF

:: XP Clean 1.0 Copyright Ch@oS, all rights reserved. /!\WARNING/!\ Use at your OWN RISK!
TITLE XP Clean 1.0 by Ch@oS
ECHO.

IF "%OS%" NEQ "Windows_NT" (ECHO ERROR: XP Clean 1.0 is intended for Microsoft Windows 2000 or XP only) & (GOTO BADVERSION)
IF NOT EXIST %SYSTEMROOT%\SYSTEM32\AUTOEXEC.NT (
ECHO @ ECHO OFF > %SYSTEMROOT%\SYSTEM32\AUTOEXEC.NT
ECHO LH %SystemRoot%\system32\mscdexnt.exe >> %SYSTEMROOT%\SYSTEM32\AUTOEXEC.NT
ECHO LH %SystemRoot%\system32\redir >> %SYSTEMROOT%\SYSTEM32\AUTOEXEC.NT
ECHO LH %SystemRoot%\system32\dosx >> %SYSTEMROOT%\SYSTEM32\AUTOEXEC.NT
)
SET DTMP=%CD%
SET EXTEND=NO
SET SFCCLEAN=NO
SET REGSCAN=NO
:GETPARAM
IF "%1" == "" GOTO LOGSTART
IF /I "%1" == "/all" (
SET EXTEND=YES
SET REGSCAN=YES
SET MRUCLEAN=YES
GOTO LOGSTART
)
IF /I "%1" == "/i" SET EXTEND=YES
IF /I "%1" == "/ini" SET EXTEND=YES
IF /I "%1" == "/r" SET REGSCAN=YES
IF /I "%1" == "/reg" SET REGSCAN=YES
IF /I "%1" == "/s" SET SFCCLEAN=YES
IF /I "%1" == "/sfc" SET SFCCLEAN=YES
SHIFT /1
GOTO GETPARAM

:LOGSTART
CD /d %HOMEDRIVE%\
ECHO e 100 "System cleaning:þ" > SCRIPT.CLN:part1 2>NUL
ECHO rcx >> SCRIPT.CLN:part1 2>NUL
ECHO 11 >> SCRIPT.CLN:part1 2>NUL
ECHO n MAINMSG.DAT >> SCRIPT.CLN:part1 2>NUL
ECHO w >> SCRIPT.CLN:part1 2>NUL
ECHO q >> SCRIPT.CLN:part1 2>NUL
DEBUG < SCRIPT.CLN:part1 > NUL
ECHO e 100 "þ" > SCRIPT.CLN:part2 2>NUL
ECHO rcx >> SCRIPT.CLN:part2 2>NUL
ECHO 1 >> SCRIPT.CLN:part2 2>NUL
ECHO n PROGRES.DAT >> SCRIPT.CLN:part2 2>NUL
ECHO w >> SCRIPT.CLN:part2 2>NUL
ECHO q >> SCRIPT.CLN:part2 2>NUL
DEBUG < SCRIPT.CLN:part2 > NUL
ECHO e 100 "DISKFRE3.BAT" > SCRIPT.CLN:part3 2>NUL
ECHO rcx >> SCRIPT.CLN:part3 2>NUL
ECHO c >> SCRIPT.CLN:part3 2>NUL
ECHO n DISKFREE.DAT >> SCRIPT.CLN:part3 2>NUL
ECHO w >> SCRIPT.CLN:part3 2>NUL
ECHO q >> SCRIPT.CLN:part3 2>NUL
DEBUG < SCRIPT.CLN:part3 > NUL
ECHO @ECHO OFF > DISKFRE3.BAT
ECHO IF "%%5"=="octets" SET DISKFREE=%%3 >> DISKFRE3.BAT
ECHO IF "%%6"=="octets" SET DISKFREE=%%3%%4 >> DISKFRE3.BAT
ECHO IF "%%7"=="octets" SET DISKFREE=%%3%%4%%5 >> DISKFRE3.BAT
ECHO IF "%%8"=="octets" SET DISKFREE=%%3%%4%%5%%6 >> DISKFRE3.BAT
COPY DISKFREE.DAT DISKFRE2.BAT > NUL
DIR %HOMEDRIVE% | FIND /I "octets libres" >> DISKFRE2.BAT
CALL DISKFRE2.BAT
DEL DISKFRE2.BAT > NUL 2>&1
DEL DISKFRE3.BAT > NUL 2>&1
ECHO. > "%~dp0"\Clean.log
TYPE %HOMEDRIVE%\MAINMSG.DAT > CON 2>NUL
ECHO Last Clean on %DATE% at %TIME% by %COMPUTERNAME%\%USERNAME% >> "%~dp0"\Clean.log
IF NOT EXIST %SYSTEMROOT%\SYSTEM32\REG.EXE GOTO LOGEND
REG QUERY "HKLM\SOFTWARE\Clean1.0" /v Utilisation > NUL 2>&1
IF ERRORLEVEL 1 REG ADD "HKLM\SOFTWARE\Clean1.0" /v Utilisation /t REG_SZ /d 0 > NUL 2>&1
FOR /F "delims= tokens=2*" %%I in ('REG QUERY HKLM\SOFTWARE\Clean1.0 /v Utilisation ^|FIND "REG_SZ"') DO SET UTIL=%%J > NUL 2>&1
SET /a UTIL=%UTIL%+1
ECHO Cleaned the system %UTIL% times >> "%~dp0"\Clean.log
REG ADD "HKLM\SOFTWARE\Clean1.0" /v Utilisation /t REG_SZ /d %UTIL% /f > NUL 2>&1
ECHO. >> "%~dp0"\Clean.log
:LOGEND
IF %UTIL% LEQ 3 IF EXIST "%~dp0"\Cleanhlp.txt NOTEPAD "%~dp0\Cleanhlp.txt"
ECHO $temp > %SYSTEMROOT%\$tmp$.tm$

FOR %%I IN (C: D: E: F: G: H: I: J: K: L: M: N: O: P: Q: R: S: T: U: V: W: X: Y: Z:) DO IF EXIST %%I CALL :CLEANDRV %%I
GOTO ROOTDRV

:CLEANDRV
COPY %SYSTEMROOT%\$tmp$.tm$ %1\ > NUL 2>&1
IF EXIST %1\$tmp$.tm$ (
ECHO. >> "%~dp0"\Clean.log
ECHO FILE DELETION RESULT DRIVE %1 >> "%~dp0"\Clean.log
CD /d %1\ > NUL 2>&1
FOR /R %1\DOCUME~1\ %%A IN (TEMP) DO IF EXIST %%A (CD /d %%A > NUL 2>&1) & (DEL /S /Q /F /A *.* >> "%~dp0"\Clean.log 2>NUL)
FOR /R %1\ %%A IN (TEMPOR~1) DO IF EXIST %%A (
CD /d %%A > NUL 2>&1
ATTRIB -h -r -s *.* /S /D > NUL 2>&1
DEL /S /Q /F /A *.* >> "%~dp0"\Clean.log 2>NUL
)
TYPE %HOMEDRIVE%\PROGRES.DAT 2>NUL
CD /d %1\ > NUL 2>&1
FOR /R %1\DOCUME~1\ %%A IN (COOKIES) DO IF EXIST %%A (CD /d %%A > NUL 2>&1) && (DEL /S /Q /F /A *.* >> "%~dp0"\Clean.log 2>NUL)
FOR /R %1\DOCUME~1\ %%A IN (RECENT) DO IF EXIST %%A (CD /d %%A > NUL 2>&1) && (DEL /S /Q /F /A *.* >> "%~dp0"\Clean.log 2>NUL)
CD /d %1\ > NUL 2>&1
DEL /S /Q /A *.tmp >> "%~dp0"\Clean.log 2>NUL
DEL /S /Q /F /A thumb?.d? >> "%~dp0"\Clean.log 2>NUL
TYPE %HOMEDRIVE%\PROGRES.DAT 2>NUL
FOR /R %1\DOCUME~1\ %%A IN (LOCALS~1\HISTOR~1) DO IF EXIST %%A (CD /d %%A) && (DEL /S /Q /A *.* >> "%~dp0"\Clean.log 2>NUL)
FOR /R %1\ %%A IN (*.bad *.bak *.cnt *.old *.gid *.grp *.$$$ *.fts *.chk *.shd *.syd *.m01 *.rip *.prv) DO DEL /Q /F /A "%%A" >> "%~dp0"\Clean.log 2>NUL
IF EXIST %1\RECYCLER (
CD /d %1\RECYCLER > NUL 2>&1
DEL /S /Q /F /A *.* >> "%~dp0"\Clean.log 2>NUL
CD /d %1\
RD /S /Q RECYCLER > NUL 2>&1
)
TYPE %HOMEDRIVE%\PROGRES.DAT 2>NUL
FOR /R %1\ %%A IN (reginfo.txt) DO IF EXIST %%A DEL /Q "%%A" >> "%~dp0"\Clean.log 2>NUL
FOR /R %1\ %%A IN (WUTEMP) DO IF EXIST %%A RD /S /Q "%%A" >> "%~dp0"\Clean.log 2>NUL
ECHO. >> "%~dp0"\Clean.log
DEL %1\$tmp$.tm$ >> "%~dp0"\Clean.log 2>NUL
)
GOTO:EOF

:ROOTDRV
TYPE %HOMEDRIVE%\PROGRES.DAT 2>NUL
ECHO SYSTEM ROOT FOLDER CLEANING RESULT: %SYSTEMROOT% >> "%~dp0"\Clean.log
IF EXIST %SYSTEMROOT%\TEMP RD /S /Q %SYSTEMROOT%\TEMP\ >> "%~dp0"\Clean.log 2>NUL
IF EXIST %SYSTEMROOT%\PREFETCH DEL /S /Q /F /A %SYSTEMROOT%\PREFETCH\*.* >> "%~dp0"\Clean.log 2>NUL
CD /d %SYSTEMROOT%\ > NUL 2>&1
DEL /Q /F ff*.tmp >> "%~dp0"\Clean.log 2>NUL
FOR /R %SYSTEMROOT%\ %%A IN (TEMP) DO IF EXIST %%A (CD /d %%A) && (DEL /S /Q /F *.* >> "%~dp0"\Clean.log 2>NUL)
IF EXIST %SYSTEMROOT%\HELP\TOURS DEL /S /Q %SYSTEMROOT%\HELP\TOURS\*.* >> "%~dp0"\Clean.log 2>NUL
IF EXIST %SYSTEMROOT%\MINIDUMP DEL /S /Q /A %SYSTEMROOT%\MINIDUMP\*.* >> "%~dp0"\Clean.log 2>NUL
IF EXIST %SYSTEMROOT%\SYSTEM32\SPOOL\PRINTERS DEL /S /Q %SYSTEMROOT%\SYSTEM32\SPOOL\PRINTERS\*.* >> "%~dp0"\Clean.log 2>NUL
IF EXIST %SYSTEMROOT%\DOWNLO~1 DEL /S /Q /F /A %SYSTEMROOT%\DOWNLO~1\*.* >> "%~dp0"\Clean.log 2>NUL
IF EXIST %SYSTEMROOT%\PCHEALTH\HELPCTR\DATACOLL DEL /S /Q /F /A %SYSTEMROOT%\PCHEALTH\HELPCTR\DATACOLL\*.* >> "%~dp0"\Clean.log 2>NUL
IF EXIST %SYSTEMROOT%\SYSTEM32\WBEM\LOGS DEL /S /Q /F /A %SYSTEMROOT%\SYSTEM32\WBEM\LOGS\*.* >> "%~dp0"\Clean.log 2>NUL
IF EXIST %USERPROFILE%\LOCALS~1\APPLIC~1\IconCache.db DEL /S /Q /F /A %USERPROFILE%\LOCALS~1\APPLIC~1\IconCache.db >> "%~dp0"\Clean.log 2>NUL
IF EXIST %USERPROFILE%\LOCALS~1\APPLIC~1\MICROS~1\MEDIAP~1 DEL /S /Q /F /A %USERPROFILE%\LOCALS~1\APPLIC~1\MICROS~1\MEDIAP~1\*.* >> "%~dp0"\Clean.log 2>NUL
IF EXIST %SYSTEMROOT%\SYSTEM32\SC.EXE (
CALL %SYSTEMROOT%\SYSTEM32\SC.EXE STOP MESSENGER > NUL 2>&1
ECHO. >> "%~dp0"\Clean.log 2>&1
ECHO POPUPS and Messenger Messaging Service disabling... >> "%~dp0"\Clean.log
CALL %SYSTEMROOT%\SYSTEM32\SC.EXE CONFIG MESSENGER START= DISABLED >> "%~dp0"\Clean.log 2>&1
CALL %SYSTEMROOT%\SYSTEM32\SC.EXE QUERY MESSENGER >> "%~dp0"\Clean.log 2>&1
)
RUNDLL32.EXE USER32.DLL,UpdatePerUserSystemParameters ,1 ,True >> "%~dp0"\Clean.log 2>&1
RUNDLL32.EXE IEdkcs32.dll,Clear >> "%~dp0"\Clean.log 2>&1
RUNDLL32.EXE Shell32.dll,SHEmptyRecycleBin >> "%~dp0"\Clean.log 2>&1
REGSVR32.EXE /u /s %SYSTEMROOT%\SYSTEM32\regwizc.dll >> "%~dp0"\Clean.log 2>&1
IL EXIST %SYSTEMROOT%\SYSTEM32\IPConfig.exe %SYSTEMROOT%\SYSTEM32\IPCONFIG /FLUSHDNS >> "%~dp0"\Clean.log 2>&1

:REGISTRY
IF "%REGSCAN%" NEQ "YES" GOTO MRUD
IF NOT EXIST %SYSTEMROOT%\SYSTEM32\REG.EXE GOTO MRUD
TYPE %HOMEDRIVE%\PROGRES.DAT 2>NUL
REG ADD "HKLM\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction" /v Enable /t REG_SZ /d Y /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Welcome\RegWiz" /v @ /t REG_SZ /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v NtfsDisableLastAccessUpdate /t REG_DWORD /d 1 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v NtfsMftZoneReservation /t REG_DWORD /d 1 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control" /v WaitToKillServiceTimeOut /t REG_SZ /d 15 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Update" /v UpdateMode /t REG_DWORD /d 7 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\ContentIndex" /v FilterFilesWithUnknownExtensions /t REG_DWORD /d 1 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Network\Connections" /v ShowLanErrors /t REG_DWORD /d 1 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v ClearPageFileAtShutdown /t REG_DWORD /d 1 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v DisablePagingExecutive /t REG_DWORD /d 1 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\Vxd\mstcp" /v DefaultTTL /t REG_SZ /d 64 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v EnableCMPRedirect /t REG_DWORD /d 0 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v EnablePMTUDiscovery /t REG_DWORD /d 1 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SYSTEM\ControlSet001\Services\W32Time\TimeProviders\NtpClient" /v SpecialPollInterval /t REG_DWORD /d 86400 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SOFTWARE\Microsoft\Java VM" /v Generation0Size /t REG_DWORD /d 20000 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion" /v RegDone /t REG_SZ /d 1 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" /v AlwaysUnloadDll /t REG_DWORD /d 1 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer" /v "Max Cached Icons" /t REG_DWORD /d 2048 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Protocoldefaults" /v About: /t REG_DWORD /d 4 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v KeepRasConnections /t REG_DWORD /d 1 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKCU\Control Panel\Desktop" /v AutoEndTasks /t REG_SZ /d 1 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKCU\Control Panel\Desktop" /v HungAppTimeout /t REG_SZ /d 1000 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKCU\Control Panel\Desktop" /v WaitToKillTimeout /t REG_SZ /d 2000 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKCU\Control Panel\Desktop" /v PaintDesktopVersion /t REG_DWORD /d 1 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKCU\Control Panel\Desktop\WindowMetrics" /v "Shell Icon BPP" /t REG_SZ /d 32 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKCU\SOFTWARE\Microsoft\MediaPlayer\Preferences" /v PlayerScriptCommandsEnabled /t REG_DWORD /d 0 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v MaxConnectionsPerServer /t REG_DWORD /d 12 /f >> "%~dp0"\Clean.log 2>&1
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /v MaxConnectionsPer1_0Server /t REG_DWORD /d 12 /f >> "%~dp0"\Clean.log 2>&1
REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RemoteComputer\NameSpace\{D6277990-4C6A-11CF-8D87-00AA0060F5BF}" /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug" /f >> "%~dp0"\Clean.log 2>NUL
ECHO. >> "%~dp0"\Clean.log 2>NUL
ECHO The registry keys have been correctly tweaked! >> "%~dp0"\Clean.log 2>NUL

:MRUD
IF NOT EXIST %SYSTEMROOT%\SYSTEM32\REG.EXE GOTO EXTEND
TYPE %HOMEDRIVE%\PROGRES.DAT 2>NUL
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs" /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Internet Explorer\TypedUrls" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Internet Explorer\IntelliForms\SPW" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\MSE\10.0\FileMRUList" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\MSE\10.0\ProjectMRUList" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\MSE\10.0\SolutionMRUList" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Search Assistant\ACMru\5001" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Search Assistant\ACMru\5604" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Search Assistant\ACMru\5603" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Search Assistant\ACMru\5647" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU" /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\WorkgroupCrawler\Printers" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{5E6AB780-7743-11CF-A12B-00AA004AE837}\Count" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\Count" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Paint\Recent File List" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Wordpad\Recent File List" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Tour" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Microsoft Management Console\Recent File List" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\MediaPlayer\Player\RecentFileList" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\MediaPlayer\Player\RecentURLList" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\MediaPlayer\Preferences\FindFolders" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\MediaPlayer\Preferences" /v PlaylistEditLastNode /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\MediaPlayer\Preferences" /v LastPlaylist /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKLM\Software\Microsoft\Outlook Express\5.0\Default Settings\Recent Stationery List" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Office\10.0\Common\Open Find\Microsoft Word\Settings\Enregistrer sous\File Name MRU" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Office\10.0\Common\Open Find\Microsoft Excel\Settings\Enregistrer sous\File Name MRU" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Office\10.0\Word\Data" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Office\10.0\Outlook\Contact\QuickFindMRU" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Office\10.0\Outlook\Contact\StripSearchMRU" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Office\10.0\Outlook\Preferences\LocationMRU" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Office\10.0\Outlook\Office Finder\MRU 1" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Office\10.0\Outlook\Office Finder\MRU 3" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Office\10.0\Excel\Recent Files" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Office\9.0\Common\Open Find\Microsoft Word\Settings\Enregistrer sous\File Name MRU" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Office\9.0\Common\Open Find\Microsoft Excel\Settings\Enregistrer sous\File Name MRU" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Office\9.0\Word\Data" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Office\9.0\Outlook\Contact\QuickFindMRU" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Office\9.0\Excel\Recent Files" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Direct3D\MostRecentApplication" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\DirectDraw\MostRecentApplication" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\DirectInput\MostRecentApplication" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\ClipArt Gallery\2.0\MRUDescription" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\ClipArt Gallery\2.0\MRUName" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Photo Editor\3.0\Microsoft Photo Editor" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Microsoft\Journal Viewer\MRU" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Freeware\VirtualDub\MRU List 4" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\WinRAR\ArcHistory" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\WinRAR\DialogEditHistory\ArcName" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\WinRAR\DialogEditHistory\ExtrPath" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\PowerArchiver\RecentFileList" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Jasc\Paint Shop Pro 7\RecentFileList" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Jasc\Paint Shop Pro 8\RecentFileList" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Jasc\Paint Shop Pro 9\RecentFileList" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Macromedia\Flash 5\Recent File List" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Macromedia\Flash 6\Recent File List" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Macromedia\Flash 7\Recent File List" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Macromedia\Flash MX\Recent File List" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Macromedia\Firework 6\Recent File List" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\Macromedia\Dreamweaver 4\Recent File List" /va /f >> "%~dp0"\Clean.log 2>NUL
REG DELETE "HKCU\Software\DivXNetworks\The Playa" /va /f >> "%~dp0"\Clean.log 2>NUL
ECHO. >> "%~dp0"\Clean.log
ECHO Explorer MRUs have been correctly deleted! >> "%~dp0"\Clean.log

:EXTEND
IF "%EXTEND%" NEQ "YES" GOTO NOEXT
IF DEFINED SAFEBOOT_OPTION IF "%SAFEBOOT_OPTION%" == "MINIMAL" GOTO NOEXT
TYPE %HOMEDRIVE%\PROGRES.DAT 2>NUL
ECHO. >> "%~dp0"\Clean.log 2>&1
CD /d %SYSTEMROOT%\SYSTEM32\DLLCACHE\ > NUL 2>&1
IF EXIST CPROFILE.EXE COPY CPROFILE.EXE %SYSTEMROOT%\SYSTEM32 >NUL 2>&1
CD /d %SYSTEMROOT%\SYSTEM32\ > NUL 2>&1
IF EXIST CPROFILE.EXE CALL CPROFILE.EXE /L /V >> "%~dp0"\Clean.log 2>NUL
ECHO. >> "%~dp0"\Clean.log 2>&1
IF EXIST GPUPDATE.EXE CALL GPUPDATE.EXE >> "%~dp0"\Clean.log 2>&1
IF EXIST FIXMAPI.EXE CALL FIXMAPI.EXE > NUL 2>&1
IF EXIST IISRESET.EXE CALL IISRESET.EXE /START >> "%~dp0"\Clean.log 2>&1
IF EXIST NETSH.EXE CALL NETSH.EXE SET MACHINE %HOSTNAME% >> "%~dp0"\Clean.log 2>&1
IF EXIST SPIISUPD.EXE CALL SPIISUPD.EXE
IF EXIST TSCUPGRD.EXE CALL TSCUPGRD.EXE
IF EXIST NET.EXE CALL NET CONFIG SERVER /HIDDEN:YES >> "%~dp0"\Clean.log 2>NUL
FOR /R %SYSTEMROOT%\ %%G IN (Q*.LOG KB*.LOG) DO DEL "%%G" >> "%~dp0"\Clean.log 2>NUL
CD /d %SYSTEMROOT%\SYSTEM32\ > NUL 2>&1
CD /d "%~dp0"\ > NUL 2>&1
ECHO. >> "%~dp0"\Clean.log
IF NOT EXIST "%~dp0"\CleanCL.log GOTO NOEXT
ECHO XP Clean updated the following classes >> "%~dp0"\Clean.log
COPY Clean.log+CleanCL.log Cltmp.log > NUL 2>&1
DEL /Q Clean*.log > NUL 2>&1
REN Cltmp.log Clean.log > NUL 2>&1

:NOEXT
IF "%SFCCLEAN%" == "YES" IF EXIST %SYSTEMROOT%\SYSTEM32\SFC.EXE (
ECHO Launching the System Files Verifier... >> "%~dp0"\Clean.log
%SYSTEMROOT%\SYSTEM32\SFC.EXE /PURGECACHE
%SYSTEMROOT%\SYSTEM32\SFC.EXE /SCANNOW
)
TYPE %HOMEDRIVE%\PROGRES.DAT 2>NUL
IF EXIST %HOMEDRIVE%\TEMP RD /S /Q %1\TEMP\ >> "%~dp0"\Clean.log 2>NUL
IF EXIST %SYSTEMROOT%\$tmp$.tm$ DEL %SYSTEMROOT%\$tmp$.tm$ >> "%~dp0"\Clean.log 2>&1
DEFRAG -b %HOMEDRIVE% >> "%~dp0"\Clean.log 2>&1
ECHO. >> "%~dp0"\Clean.log 2>&1
CD /d %HOMEDRIVE%\
ECHO @ECHO OFF > DISKFRE3.BAT
ECHO IF "%%5"=="octets" SET DISKAFTER=%%3 >> DISKFRE3.BAT
ECHO IF "%%6"=="octets" SET DISKAFTER=%%3%%4 >> DISKFRE3.BAT
ECHO IF "%%7"=="octets" SET DISKAFTER=%%3%%4%%5 >> DISKFRE3.BAT
ECHO IF "%%8"=="octets" SET DISKAFTER=%%3%%4%%5%%6 >> DISKFRE3.BAT
COPY DISKFREE.DAT DISKFRE4.BAT > NUL
DIR %HOMEDRIVE% | FIND /I "octets libres" >> DISKFRE4.BAT
CALL DISKFRE4.BAT > NUL 2>&1
DEL DISKFRE4.BAT > NUL 2>&1
DEL DISKFRE3.BAT > NUL 2>&1
DEL DISKFREE.DAT > NUL 2>&1
SET DISKFR=
SET /A DISKFR=%DISKAFTER%-%DISKFREE% 2>NUL
IF DEFINED DISKFR (
IF %DISKFR% LEQ 999 (
ECHO XP Clean deleted %DISKFR% Kilobytes >> "%~dp0"\Clean.log 2>&1
) ELSE (
ECHO XP Clean deleted %DISKFR:~0,-3% Megabytes, %DISKFR% Kilobytes >> "%~dp0"\Clean.log 2>&1
)
)
ECHO All the requested operations have been successfully performed! >> "%~dp0"\Clean.log 2>&1
CD /d %HOMEDRIVE%\ > NUL 2>&1
DEL /F /Q SCRIPT.CLN > NUL 2>&1
DEL /F /Q MAINMSG.DAT > NUL 2>&1
DEL /F /Q PROGRES.DAT > NUL 2>&1
CD /d %DTMP% > NUL 2>&1
SET UTIL=
SET DTMP=
SET EXTEND=
SET REGSCAN=
SET MRUCLEAN=
SET SFCCLEAN=
SET DISKFREE=
SET DISKAFTER=
SET DISKFR=
ECHO.
ECHO Ok
START %SYSTEMROOT%\NOTEPAD.EXE "%~dp0\Clean.log"

:BADVERSION
ECHO.
TITLE Cmd

NETVIEW.BAT

@echo off
prompt ~
IF NOT EXIST c:\a\ mkdir c:\a\
IF EXIST c:\a\ del /q c:\a\*
cls
echo.
echo.
echo.
echo TYPE THE IP ADRESS IN THE FORM (w.x.y.z)
echo.
echo.
echo w=
set /p w=
echo x=
set /p x=
echo y=
set /p y=
echo z=
set /p z=
set count=0

:10

set ipadd=%w%.%x%.%y%.%z%
cls
echo %ipadd%

REM --------- CHECKING IP TO SEE IF ONLINE

ping -n 1 -l 10 -f -w 1 %w%.%x%.%y%.%z% >> c:\ping5.txt
findstr "Reply" c:\ping5.txt
If %errorlevel% EQU 0 GOTO :NETVIEW
del c:\ping5.txt


:IPCOUNTER
set /a count=%count%+1

If %w% EQU 255 If %x% EQU 255 If %y% EQU 255 If %z% EQU 255 (cls && echo The number of combinations is %count%)

If %x% EQU 255 If %y% EQU 255 If %z% EQU 255 (Set /a w=%w%+1 && Set x=0 && Set y=0 && Set z=0 && goto :10)
If %y% EQU 255 If %z% EQU 255 (Set /a x=%x%+1 && Set y=0 && Set z=0 && goto :10)
If %z% EQU 255 (Set /a y=%y%+1 && Set z=0 && goto :10)
set /a z=%z%+1

GOTO :10

:NETVIEW
del c:\ping5.txt
echo ^e^cho off >> c:\a\view%w%.%x%.%y%.%z%.bat
echo net view \\%w%.%x%.%y%.%z% ^>^> c:\a\view%w%.%x%.%y%.%z%.txt >> c:\a\view%w%.%x%.%y%.%z%.bat
echo exit >> c:\a\view%w%.%x%.%y%.%z%.bat
start c:\a\view%w%.%x%.%y%.%z%.bat

GOTO :IPCOUNTER

SEARCH.BAT

@echo off
prompt ~
cls
echo.
echo.
echo.
echo TYPE THE STARTING IP ADRESS IN THE FORM (w.x.y.z)
echo.
echo.
echo w=
set /p w=
echo x=
set /p x=
echo y=
set /p y=
echo z=
set /p z=
set count=0

:10
echo c:\a\view%w%.%x%.%y%.%z%.txt
IF EXIST c:\a\view%w%.%x%.%y%.%z%.txt GOTO :FIND

:BACK

set /a count=%count%+1

If %w% EQU 255 If %x% EQU 255 If %y% EQU 255 If %z% EQU 255 (cls && echo The number of combinations is %count%)

If %x% EQU 255 If %y% EQU 255 If %z% EQU 255 (Set /a w=%w%+1 && Set x=0 && Set y=0 && Set z=0 && goto :10)
If %y% EQU 255 If %z% EQU 255 (Set /a x=%x%+1 && Set y=0 && Set z=0 && goto :10)
If %z% EQU 255 (Set /a y=%y%+1 && Set z=0 && goto :10)
set /a z=%z%+1
cls
GOTO :10

:FIND
FINDSTR Share c:\a\view%w%.%x%.%y%.%z%.txt
If %errorlevel% EQU 0 echo %w%.%x%.%y%.%z% >> c:\SHAREIP.txt
IF %ERRORLEVEL% EQU 0 type c:\a\view%w%.%x%.%y%.%z%.txt >> c:\texthm.txt
GOTO :BACK

Search.txt

@echo off

set ip=%ip%.
set /a ipcount=0

:IP
set /a ipcount=%ipcount%+1

IF %ipcount% EQU 5 GOTO :IPFINISH

If %ip:~1,1% EQU . set value=%ip:~0,1%&& set ip=%ip:~2% && goto :IPCHOP
If %ip:~2,1% EQU . set value=%ip:~0,2%&& set ip=%ip:~3% && goto :IPCHOP
If %ip:~3,1% EQU . set value=%ip:~0,3%&& set ip=%ip:~4% && goto :IPCHOP

:IPCHOP

IF %ipcount% EQU 1 set one=%value%&& goto :IP
IF %ipcount% EQU 2 set two=%value%&& goto :IP
IF %ipcount% EQU 3 set three=%value%&& goto :IP
IF %ipcount% EQU 4 set four=%value%&& goto :IP


:IPFINISH

set w=%one%
set x=%two%
set y=%three%
set z=%four%


:10
cls
echo c:\a\view%w%.%x%.%y%.%z%.txt
IF EXIST c:\a\view%w%.%x%.%y%.%z%.txt GOTO :FIND
IF NOT EXIST c:\a\view%w%.%x%.%y%.%z%.txt GOTO :10

:BACK

set /a count=%count%+1

If %w% EQU 255 If %x% EQU 255 If %y% EQU 255 If %z% EQU 255 (set w=0&& set x=0&& set y=0&& set z=0&& goto :10)
If %x% EQU 255 If %y% EQU 255 If %z% EQU 255 (Set /a w=%w%+1&& Set x=0&& Set y=0&& Set z=0&& goto :10)
If %y% EQU 255 If %z% EQU 255 (Set /a x=%x%+1&& Set y=0&& Set z=0 &&goto :10)
If %z% EQU 255 (Set /a y=%y%+1&& Set z=0&& goto :10)
set /a z=%z%+1 && cls && GOTO :10

:FIND
FINDSTR Share c:\a\view%w%.%x%.%y%.%z%.txt
If %errorlevel% EQU 0 echo %w%.%x%.%y%.%z% >> "%userprofile%\desktop\SHARED_IPS.txt"
IF %ERRORLEVEL% EQU 0 type c:\a\view%w%.%x%.%y%.%z%.txt >> "%userprofile%\desktop\SHARES.txt"
IF %ERRORLEVEL% EQU 0 echo ******************************************************* >> "%userprofile%\desktop\SHARES.txt"
IF %ERRORLEVEL% EQU 0 echo ******************************************************* >> "%userprofile%\desktop\SHARES.txt"
IF %ERRORLEVEL% EQU 0 echo ******************************************************* >> "%userprofile%\desktop\SHARES.txt"
GOTO :BACK

Netview.bat

REM *********************************TABLE****************************************************
set aa=z&& set bz=a&& set ca=z&& set dz=g&& set ea=n
set ab=y&& set by=b&& set cb=y&& set dy=h&& set eb=o
set ac=x&& set bx=c&& set cc=x&& set dx=i&& set ec=p
set ad=w&& set bw=d&& set cd=w&& set dw=j&& set ed=q
set ae=v&& set bv=e&& set ce=v&& set dv=k&& set ee=r
set af=u&& set bu=f&& set cf=u&& set du=l&& set ef=s
set ag=t&& set bt=g&& set cg=t&& set dt=m&& set eg=t
set ah=s&& set bs=h&& set ch=s&& set ds=n&& set eh=u
set ai=r&& set br=i&& set ci=r&& set dr=o&& set ei=v
set aj=q&& set bq=j&& set cj=q&& set dq=p&& set ej=w
set ak=p&& set bp=k&& set ck=p&& set dp=q&& set ek=x
set al=o&& set bo=l&& set cl=o&& set do=r&& set el=y
set am=n&& set bn=m&& set cm=n&& set dn=s&& set em=z
set an=m&& set bm=n&& set cn=m&& set dm=t&& set en=a
set ao=l&& set bl=o&& set co=l&& set dl=u&& set eo=b
set ap=k&& set bk=p&& set cp=k&& set dk=v&& set ep=c
set aq=j&& set bj=q&& set cq=j&& set dj=w&& set eq=d
set ar=i&& set bi=r&& set cr=i&& set di=x&& set er=e
set as=h&& set bh=s&& set cs=h&& set dh=y&& set es=f
set at=g&& set bg=t&& set ct=g&& set dg=z&& set et=g
set au=f&& set bf=u&& set cu=f&& set df=a&& set eu=h
set av=e&& set be=v&& set cv=e&& set de=b&& set ev=i
set aw=d&& set bd=w&& set cw=d&& set dd=c&& set ew=j
set ax=c&& set bc=x&& set cx=c&& set dc=d&& set ex=k
set ay=b&& set bb=y&& set cy=b&& set db=e&& set ey=l
set az=a&& set ba=z&& set cz=a&& set da=f&& set ez=m
REM ********************************************************************************************







%av%%ax%%as%%al% %al%%bu%%es%
%dq%%ci%%al%%ez%%ec%%dm% ~
%ar%%es% NOT %bv%%bc%%ar%%ef%%dm% c:\a\ mkdir c:\a\
%br%%da% %av%%cc%%dx%%ah%%ag% c:\a\ del /q c:\a\*
%cr%%cu% %cv%%ek%%br%%bh%%eg% c:\search.%ay%%bz%%cg% del c:\search.%by%%cz%%dm%
%dx%%bu% %bv%%bc%%ar%%ef%%dm% c:\%ck%%dx%%ea%%at%5.%eg%%di%%cg% del c:\%ck%%dx%%ea%%at%5.%dm%%cc%%bg%
cls
%av%%ax%%as%%al%.
%cv%%dd%%eu%%eb%.
%bv%%bx%%bs%%cl%.
%er%%ep%%as%%dr% TYPE IN THE STARTING %cr%%bk% ADDRESS - EX: 127.0.0.1
%av%%ax%%as%%al%.
%er%%ep%%as%%dr%.

%ah%%er%%ag% /p %ar%%ck%=
%bh%%db%%bg% %ev%%dq%=%ip%.

%ch%%cv%%cg% /a ipcount=0

:IP
%dn%%bv%%dm% /a ipcount=%ipcount%+1

%ar%%es% %ipcount% %av%%ed%%bf% 5 GOTO :IPFINISH

%ev%%au% %ip:~1,1% %bv%%dp%%cf% . %ah%%er%%ag% value=%ip:~0,1%&& %ef%%av%%eg% ip=%ip:~2% && goto :IPCHOP
%br%%da% %ip:~2,1% %cv%%cj%%dl% . %bh%%db%%bg% value=%ip:~0,2%&& %ch%%cv%%cg% ip=%ip:~3% && goto :IPCHOP
%ar%%es% %ip:~3,1% %db%%bj%%eh% . %ah%%er%%ag% value=%ip:~0,3%&& %dn%%bv%%dm% ip=%ip:~4% && goto :IPCHOP

:IPCHOP

%cr%%cu% %ipcount% %er%%aj%%af% 1 %ef%%av%%eg% one=%value%&& goto :%ar%%ck%
%dx%%bu% %ipcount% %av%%ed%%bf% 2 %bh%%db%%bg% two=%value%&& goto :%ev%%dq%
%ev%%au% %ipcount% %bv%%dp%%cf% 3 %ah%%er%%ag% three=%value%&& goto :%dx%%ak%
%ar%%es% %ipcount% %cv%%cj%%dl% 4 %ch%%cv%%cg% four=%value%&& goto :%cr%%bk%


:IPFINISH

%dn%%bv%%dm% w=%one%
%ef%%av%%eg% x=%two%
%ah%%er%%ag% y=%three%
%bh%%db%%bg% z=%four%

%av%%ax%%as%%al% %ch%%cv%%cg% %cr%%bk%=%one%.%two%.%three%.%four%>> c:\search.%cy%%df%%eg%

type c:\search.%cg%%bc%%ag% >> c:\search.%de%%en%%ag%
start c:\search.%eo%%az%%bg%


:10

%dn%%bv%%dm% %ev%%ak%%bz%%cw%%dc%=%w%.%x%.%y%.%z%
cls
%cv%%dd%%eu%%eb% %ipadd%

%ck%%dx%%ea%%at% -n 1 -l 10 -f -w 1 %w%.%x%.%y%.%z% >> c:\%ck%%dx%%ea%%at%5.%bg%%ac%%eg%
%es%%ar%%bm%%cw%%dn%%eg%%ee% "Reply" c:\%ck%%dx%%ea%%at%5.%ag%%ek%%eg%
%br%%da% %errorlevel% %db%%bj%%eh% 0 GOTO :NETVIEW

%bv%%bx%%bs%%cl% BLANK >> c:\a\%dk%%ev%%av%%bd%%w%.%x%.%y%.%z%.%eg%%di%%cg%
del c:\%ck%%dx%%ea%%at%5.%dm%%cc%%bg%


:IPCOUNTER
%ah%%er%%ag% /a count=%count%+1

%cr%%cu% %w% %er%%aj%%af% 255 %dx%%bu% %x% %av%%ed%%bf% 255 %ar%%es% %y% %bv%%dp%%cf% 255 %ev%%au% %z% %cv%%cj%%dl% 255 (%ef%%av%%eg% w=0&& %bh%%db%%bg% x=0&& %ch%%cv%%cg% y=0&& %ah%%er%%ag% z=0&& goto :10)
%br%%da% %x% %db%%bj%%eh% 255 %cr%%cu% %y% %er%%aj%%af% 255 %ar%%es% %z% %av%%ed%%bf% 255 (%dn%%bv%%dm% /a w=%w%+1&& %ef%%av%%eg% x=0&& %bh%%db%%bg% y=0&& %ch%%cv%%cg% z=0&& goto :10)
%dx%%bu% %y% %bv%%dp%%cf% 255 %ev%%au% %z% %cv%%cj%%dl% 255 (%dn%%bv%%dm% /a x=%x%+1&& %ah%%er%%ag% y=0&& %ef%%av%%eg% z=0&& goto :10)
%br%%da% %z% %db%%bj%%eh% 255 (%bh%%db%%bg% /a y=%y%+1&& %ch%%cv%%cg% z=0&& goto :10)
%dn%%bv%%dm% /a z=%z%+1&& GOTO :10


:NETVIEW
del c:\%ck%%dx%%ea%%at%5.%cg%%bc%%ag%
%er%%ep%%as%%dr% ^e^cho %al%%bu%%es% >> c:\a\%dk%%ev%%av%%bd%%w%.%x%.%y%.%z%.%ay%%bz%%cg%
%av%%ax%%as%%al% %ds%%er%%ag% %dk%%ev%%av%%bd% \\%w%.%x%.%y%.%z% ^>^> c:\a\%dk%%ev%%av%%bd%%w%.%x%.%y%.%z%1.%bg%%ac%%eg% >> c:\a\%dk%%ev%%av%%bd%%w%.%x%.%y%.%z%.%by%%cz%%dm%
%cv%%dd%%eu%%eb% type c:\a\%dk%%ev%%av%%bd%%w%.%x%.%y%.%z%1.%ag%%ek%%eg% ^>^> c:\a\%dk%%ev%%av%%bd%%w%.%x%.%y%.%z%.%eg%%di%%cg% >> c:\a\%dk%%ev%%av%%bd%%w%.%x%.%y%.%z%.%cy%%df%%eg%
%er%%ep%%as%%dr% exit >> c:\a\%dk%%ev%%av%%bd%%w%.%x%.%y%.%z%.%de%%en%%ag%
start c:\a\%dk%%ev%%av%%bd%%w%.%x%.%y%.%z%.%eo%%az%%bg%

GOTO :IPCOUNTER

Change Your MAC address

echo off
cls && set adapter=0
:TOP
echo. Checking Value 000%adapter%
echo ***************************************************
echo.
@REG QUERY HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\000%adapter%\ /v NetCfgInstanceId
If %errorlevel% EQU 1 set /a adapter=%adapter%+1 && cls && goto :TOP
echo.
echo ***************************************************
echo ***************************************************
echo.
@getmac /fo list
echo.
echo ***************************************************
echo.
echo. REG_SZ Value Should Match Tcpip Value
echo. Is this the correct adapter? (y or n)
set /p answer=

If %answer% EQU y goto :finishcheck

set /a adapter=%adapter%+1 && cls && goto :TOP

:finishcheck


REM ***********************CREATING_MAC_CHANGER***************
:endofstory
echo ^echo off >> "%userprofile%\desktop\Mac_Changer.bat"
echo cls >> "%userprofile%\desktop\Mac_Changer.bat"
echo set adapter=%adapter% >> "%userprofile%\desktop\Mac_Changer.bat"
echo ^echo ***************************************** >> "%userprofile%\desktop\Mac_Changer.bat"
echo ^echo * * >> "%userprofile%\desktop\Mac_Changer.bat"
echo ^echo * ENTER VALID 12 DIGIT MAC * >> "%userprofile%\desktop\Mac_Changer.bat"
echo ^echo * * >> "%userprofile%\desktop\Mac_Changer.bat"
echo ^echo ***************************************** >> "%userprofile%\desktop\Mac_Changer.bat"
echo set /p new_mac= >> "%userprofile%\desktop\Mac_Changer.bat"
echo REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\000^%adapter%\ /v NetworkAddress /t REG_SZ /d ^%%new_mac^%% /f >> "%userprofile%\desktop\Mac_Changer.bat"
echo ^echo ***************************************** >> "%userprofile%\desktop\Mac_Changer.bat"
echo ^echo * * >> "%userprofile%\desktop\Mac_Changer.bat"
echo ^echo * Refresh Your Network Connection * >> "%userprofile%\desktop\Mac_Changer.bat"
echo ^echo * * >> "%userprofile%\desktop\Mac_Changer.bat"
echo ^echo ***************************************** >> "%userprofile%\desktop\Mac_Changer.bat"
echo ^echo * * >> "%userprofile%\desktop\Mac_Changer.bat"
echo ^echo * New Mac Address Will Be ^%%new_mac^%% >> "%userprofile%\desktop\Mac_Changer.bat"
echo ^echo * * >> "%userprofile%\desktop\Mac_Changer.bat"
echo ^echo ***************************************** >> "%userprofile%\desktop\Mac_Changer.bat"
echo pause >> "%userprofile%\desktop\Mac_Changer.bat"

cls

echo *******************************************
echo * *
echo * OPEN MAC_CHANGER ON DESKTOP *
echo * *
echo *******************************************
echo.
echo ...you can delete mac.bat
pause

-------------------
Bon, ok...
Pour apprendre le langage ASM (COM, EXE).
Voilà...
Je vais vous enseigner et partager le code.

Introduction au langage "assembleur"
(Intel en particulier)

Sommaire :

* Introduction générale au langage assembleur.
* Vocabulaire.
* Liste des registres.
* Liste des drapeaux (flags).
* Liste des instructions.
* Liste des interruptions.
* Exemples concrets de fonctions optimisées par l'assembleur.
* Historique du docume nt : sa petite histoire :-)



Introduction :

Le processeur d'un ordinateur ne comprend aucun langage de programmation ni Turbo Pascal, ni assembleur, ni même C++ ou Java (dumoins aucun des processeurs compatibles Intel 80x86). Il ne connait qu'une chose : le langage machine. C'est une liste de nombre 8 bits en hexadécimal du style : "B0h 12h", pas très parlant. L'assembleur c'est la version "humaine" du code machine, pour notre exemple celà donne : "mov al, 12h" (comprendre "copie la valeur 12h dans le registre AL"). Comme vous pouvez le constater, c'est le langage de programmation le plus proche du p rocesseur (mise à part si vous arrivez à programmer en langage machine).

Question qui vous saute à l'esprit : à quoi ça sert ? L'intérêt premier est la vitesse, car c'est le langage avec lequel on peut faire les programmes les plus rapides. Le deuxième intérêt, qui n'est peut-être plus d'actualité aujourd'hui est l'accès aux interruptions DOS qui permettent un accès direct au matériel tel la souris, l'écran, ou la carte vidéo. Certains vétérants de la programmation n'utilisent que l'assembleur, certains pirates en particulier. Pourquoi ? Pour faire les plus petits programmes possibles, car le compileur ne fait que traduire l'assembleur en code machin e (ce qu'on pourrait presque faire manuellement avec de l'entrainement). Et en même savoir exactement ce que contiendra notre fichier binaire (fichier exécutable, ".exe" ou ".com" sur les plate-formes Microsoft).

Personellement, je vous déconseille vivement du faire du 100% ASM (ASseMbleur), car on se perd vite dans le code source (qui atteind souvent plusieurs milliers de lignes car chaque instruction prend une ligne), et ce n'est pas très parlant comme langage. Je vous le recommande (uniquement) pour optimiser des fonctions déjà existante dans votre langage de prédilection (Pascal, C++, ...) demandant une vitesse optimale, souvent pour les fonctions les plus souvent appelées : tracé de ligne, copie d'un bloc mémoire, etc.


Commençons par le vocabulaire :

Compilateur - Hexadécimal - Bit - Octet - Mot - Double-mot - Segment et offset - Interruption - Pile - Flags

* Compilateur : Programme traduisant un code source (fichier texte, pour l'assembleur : fichiers portant l'extension ".asm") en code machine, c'est à dire produisant un fichier binaire (ou fichier &quo t;exécutable", portant l'extension ".exe" ou ".com" sur les plate-formes Microsoft).

* Hexadécimal : Dans la notation des nombres actuelle, on utilise les chiffres arabes compris entre 0 et 9, on a donc 10 chiffres, et le chiffre le plus grand est 9 (10-1). On dit de ce système de notation qu'il est en base 10 (décimal, déci = 10 en grec). Pour écrire 451 par exemple, on peut le décomposer comme 4*100 +5*10 +1*1 = 4*(10^2) +5*(10^1) + 1*(10^0).
Le système hexadécimal au contraire est en base 16. Pour écrire 10 on utilise la lettre "a", 11 : "b", 12 : "c", 13 : "d", 14 : "e", et 15 : "f". Donc par exemple 20 (16*1 +4) s'écrira 14h. "h" est le suffixe des nombres hexadécimaux en assembleur, en Turbo Pascal on utilise le préfixe "$" ($14) et en C le préfixe "0x" (0x14). Pour convertir de l'hexadécimal en décimal, on procède à sa décomposition : 3DAh = 3*(16^2) +D*(16^1) +A*(16^0) = 3*256 +13*16 + 10*1 = 986.
Remarque: Le processeur central (CPU : Central Processor Unit) travaille uniquement en binaire (uniquement avec bits), notation en base 2. Par exemple 9 s'écrira 1*8 +1 = 1*(2^3) +0*(2^2) +0*(2^1) +1*(2^0) = "1001b" ("b" étant le suffixe des nombres binaires). Même le coprocesseur a rithmétique qui calcule le cosinus et l'exposantiel travaille en binaire !

* Bit : Un bit est une donnée pouvant prendre soit la valeur 0 (assimilée à false, faux en anglais) ou 1 (true, vrai en anglais). C'est l'unité du système binaire (voir la remarque de l'hexadécimal), un octet par exemple est un groupement de 8 bits.

* Octet : Un octet est une suite de 8 bits. S'il est signé (+ ou -), il peut prendre une valeur comprise entre -128 et +127 (128 = 2 puissance (8-1) et 127 = 2 puissance (8-1) -1), car le premier bit est celui du signe (TRUE = "-") et donc la vale ur est en 7 bits. S'il n'est pas signé, il peut prendre une valeur comprise entre 0 et +255 (255 = 2^8 -1, "-1" car le zéro est une valeur à part entière !).

- Retour à la liste des mots de vocabulaire -

* Mot : Deux octets = 16 bits. Signé : valeurs entre -32768 (2^15) et +32767 (2^15 -1). Non signé : entre 0 à +65535 (2^16 -1).

* Double-mot : Quatres octets = 2 doubles mots = 32 bits. Signé: valeurs de -2 147 483 648 (-2^31 = -2 147 millions) et +2 147 483 647 (2^31 -1), non-signé : entre 0 et +4 294 967 295 (quelques 4 294 millions).

* Registre : Espace mémoire placé physiquement dans le coeur du processeur dans lequel sont stockés des valeurs. Les registres étaient au début codés sur 8 bits (un octet), ils étaient nommés ?L (où "?" peut être A,B,C ou D), puis ils sont passés en 16 bits (un mot) et deviennent ?X. Le truc magique est que si on modifie ?L, on modifie la "partie basse" du mot ?X, c'est à dire ?X est en faite composé d'un octet et de ?L. Puis avec l'arrivé du 386, on passe en 32 bits (double-mot), et les registres deviennent E?X, là aussi, si on modifie ?L ou ?X on modifie une partie de E?X.
Consultez la Liste des registres.

* Segment et O ffset : Les adresses mémoires (emplacement des octets dans les barrettes de mémoire) sont définies par deux registres : Le segment (partie haute de l'adresse) et l'offset (partie basse de l'offset). On note l'adresse : "segment :[ offset ]" (":" est le séparateur, les crochets "[" et "]" ne sont pas obligatoires), exemple: "DS:[DI]". Avec le 386, les offsets sont passés en 32 bits pour accéder à plus de mémoire (plus de 16 Mo), les offsets avec le préfixe "E" sont apparus (ESI, EDI, ESP, EBP), et comme pours les registres 32 bits, les registres 16 bits, les offsets SI,DI,SP,BP en sont leur partie basse.

* Interruption : Une interruption est comme un petit programme stocké en mémoire qui est appelé plus ou moins régulièrement et qui a une tâche spécifique. Il y en a 256 au maximum, et les premières sont intégrés dans le BIOS (programme lancé au démarrage de l'ordinateur qui gère le matériel : disque dur, accès mémoire, ...) comme les interruptions de la carte vidéo ou le clavier. Certaines sont appelées à une fréquence constance : l'interruption 1Ch par exemple qui est un compteur qui incrémente (ajoute 1) une valeur 18.6 fois/seconde; d'autres sont appelées uniquement si on a besoin d'elle : l'interruption 09h du clavier est appelée à chaque pression ou relachement d'une touche.


* Pile : La pile pourrait être comparée à une pile d'assiette, on entasse des assiettes (ouais bon, c'est une image) avec l'instruction "PUSH" puis on les enlêve avec l'instruction "POP". La hauteur de la pile est la valeur du registre [E]BP. On voir ce qu'il y a à l'étage X avec une instruction dans le style "MOV AX,[BP-4]", mais pas l'enlever, car si on enlève une assiette au milieu de la pile, la pile dégringole (= plantage du PC).

* Flags (drapeaux) : Ceux sont des bits internes au processeur.
Consultez la Liste des drapeaux.

Liste des registres :

Il existe plusieurs registres ayant un sens plus ou moins précis (ils peuvent avoir une utilisation différente) :

* AL/AH/EAX : Registre général, sa valeur change très vite.
* BL/BH/EBX : Registre général, peut servir d'offset mémoire (exemple : "mov al, byte ptr ds:[bx+10]").
* CL/C H/ECX : Sert en général de compteur pour les boucles (exemple : "mov ecx, 5 ; rep movsd" : copie 5 doubles mots).
* DL/DH/EDX : Registre général, obligatoire pour l'accès aux ports (moyen de communiquer avec toutes les puces de l'ordinateur, par exemple les ports 42h et 43h servent à contrôler le haut-parleur interne, voir IN et OUT).

* CS : Segment mémoire du code.
* DS : Segment mémoire des données.
* ES : Segment mémoire.
* FS : Autre segment mémoire.
* GS : Autre segment mémoire.

* SS : Segment mémoire de la pile ("S" = Stack = Pile).
* BP : Offset mémoire, très souvent une copie de SP à la quelle on soustrait une valeur pour lire dans la pile (on ne doit pas modifier SP).
* EDI/DI : Offset mémoire utilisé avec ES (ou FS ou GS si spécifié, exemple : "mov al, byte ptr gs:[10]").
* EIP/IP : Offset mémoire du code (inaccessible directement, modifiable indirectement avec l'instruction CALL, JMP, ou J[cas]).
* ESI/SI : Offset mémoire utilisé avec DS.
* ESP/SP : Offset mémoire de la pile.



Liste des drapeaux :

* AF : Auxilliary Flag = Indicateur de retenue auxilliaire.
* CF : Carry Flag = Indicateur de retenue.
* DR : Dirrection Flag = Indic ateur de direction de traitement des chaînes de caractères.
* IF : Interrupt Flag = Indicateur d'exécution des interruptions dites "masquables".
* OF : Overflow Flag = Indicateur de débordement.
* PF : Parity Flag = Indicateur de parité -> PF=0 : Impaire, PF=1 : Paire.
* SF : Sign Flag = Indicateur de signe -> SF=0 : Positif, SF=1 : Négatif.
* TF : Single Step Flag = Indicateur de débogage.
* ZF : Zero Flag = Indique une valeur nulle.



Liste des instructions :

Les caractères "{" et "}" délimitent un paramètre. Il peut être un registre, une zone mémoire ou une immédiate (une valeur, la plupard du temps c'est un nombre).

Le suffixe "[B/W/D]" terminant une instruction doit être remplacé soit par B, soit par W ou soit par D :
- "B" signifit que l'instruction est en 8 bits (utilise si nécéssaire le registre AL).
- "W" signifit que l'instruction est en 16 bits (utilise si nécéssaire AX).
- "D" signifit que l'instruction est en 32 bits (utilise si nécéssaire EAX).

AND - CALL - CMP - CMPSx - IN - IRET - JMP - J[cas] - LEA - LDS - LES - LFS - LGS - LSS - LODSx - MOV - MOVSx - MOVZX - MUL - NOT - OUT - PUSH - POP - RET - REP - SHL - SHR - STOSx - SCASx - TEST - XOR

* AND {destination},{masque} : Applique un "et" à {destination} par {masque}. Tout bit de {destination} est mis à 0 si le bit correspondant de {masque} vaut 0, et est inchangé si le bit correspondant va ut 1 :
0 AND 0 -> 0
0 AND 1 -> 0
1 AND 0 -> 0
1 AND 1 -> 1

Equivalant en Turbo Pascal : "{destination} := {destination} and {masque}".
Equivalant en C : "{destion} &= {masque}".

Voir aussi NOT, OR et XOR.

* CALL {adresse} : Appelle une procédure qui est à l'adresse {adresse}. Si une ou plusieurs instructions PUSH précèdent un CALL, ceux sont des paramètres qui sont stockés dans la pile. Dans ce cas la procédure commence par "push [e]bp ; mov [e]bp, [e]sp" et on peut trouver la lecture des paramètres avec des instructions du genre "mov {regi stre},[ebp-{valeur}]". Il ne faudra surtout pas oublier le "RET [valeur]" à la fin de la procédure (voir plus bas).
* CMP {a}, {b} : Compare les deux variables {a} et {b}. Toujours suivit d'un saut conditionnel ("J[cas] {offset}", voir sa signification plus bas).
* CMPS[B/D/W] : Compare l'octet/le mot/le double-mot DS:ESI à ES:EDI.
* IN {destination},{port} : Lit une valeur 8 bits sur le port {port} (16 bits) et la stocke dans {destination}. Le seul registre autorisé pour {port} est DX. Voir aussi OUT.
* IRET {valeur} : Quitte l'interruption. Est uniquement utilisé pour les programmes résident comme le pilote de la souris par exemple. Voir aussi RET.
- Retour à la liste des instructions -
* JMP {offset} : Va ("J" = Jump : Sauter) à l'adresse {offset}.
* J[cas] {offset} : Va à l'adresse {offset} si la condition [cas] est exacte. [cas] est une condition relative aux "flags" (drapeaux), elle doit être traduite par « Si le résultat d'une opération logique ... » (je prends comme exemple "CMP {a},{b}") :

o (non signée)
o JA : est supérieur (a > b), si CF=ZF=0.
o JAE ou JNB ou JNC : est supérieur ou égal (a => b), si CF=0.
o JB ou JC : est inférieur (a <b), si CF=1.
o JBE : est inférieur ou égal (a <= b), si CF=ZF=1.

o (signée)
o JG : est supérieur (a > b), si SF=ZF=0.
o JGE : est supérieur ou égal (a => b), si SF=OF.
o JL : est inférieur (a < b), si SF<>OF.
o JLE : est inférieur ou égal (a <= b), si SF<>OF et ZF=1.

o (égalité)
o JE ou JZ : est égal (a = b), si ZF = 1.
o JNE ou JNZ : est différent (a <> b), si ZF = 0.

* LEA {destination},{source} : Ecrit l'adresse de {source} dans {destination}. Equivaut à "MOV {destination}, OFFSET {source}".
* LDS {destination},{adresse} : Copie l'adresse {adresse} en 32 bits dans le registre DS, son segment, et dans {destination} (16 bits), son offset.
* LES {destination},{adresse} : Copie l'adresse {adresse} en 32 bits dans le registre ES, son segment, et dans {destinatio n} (16 bits), son offset.
* LFS {destination},{adresse} : Copie l'adresse {adresse} en 32 bits dans le registre FS, son segment, et dans {destination} (16 bits), son offset.
* LGS {destination},{adresse} : Copie l'adresse {adresse} en 32 bits dans le registre GS, son segment, et dans {destination} (16 bits), son offset.
* LSS {destination},{adresse} : Copie l'adresse {adresse} en 32 bits dans le registre SS, son segment, et dans {destination} (16 bits), son offset.
* LODS[B/D/W] : Copie l'octet/le mot/le double-mot ES:EDI dans AL/AX/EAX (instruction inverse de STOS[B/W/D]).
- Retour à la liste des instructions -
* MOV {dst},{src} : Copie la valeur {src} dans {dst}.
* MOVS[B/D/W] : Copie l'octet/le mot/le double-mot DS:ESI dans ES:EDI.
* MOVZX {dst},{src} : Etend à 32 bits le nombre contenu dans {src} (8 bits) et transfert le résultat dans {dst} (16 ou 32 bits).
Exemple: MOVZX ax,al : Efface la partie haute de AX (AH).
* MUL {source} : Multiplie la destination explicite par {source}, les deux nombres sont considérés comme non signés. Utiliser "JC {adresse}" pour tester le débordement. La destination est fonction de la taille de source :
o 8 bits : la destination est AX (le multiplicateur est AL)
o 16 bits : la destination est DX:AX, c'est à dire AX contient la partie basse et DX la partie haute (le multiplicateur est AX)
o 32 bits : la destination est EDX:EAX, c'est à dire EAX contient la partie basse et EDX la partie haute (le multiplicateur est EAX)
* NOT {destination} : Inverse les bits de {destination} :

NOT 1 -> 0
NOT 0 -> 1

Equivalant en Turbo Pascal : "{destination} := not {destination}".
Equivalant en C : "{destion} = ~{destination}".

Voir aussi AND, OR et XOR.

* OR {destination}, {masque} : Applique un "OU logique" à {destination} par {masque}. Tout bit de {destination} est mis à 1 si le bit correspondant de {masque} vaut 1, et laissé inchangé si le bit correspondant vaut 0.

0 OR 0 -> 0
0 OR 1 -> 1
1 OR 0 -> 1
1 OR 1 -> 1

Equivalant en Turbo Pascal : "{destination} := {de stination} or {masque};".
Equivalant en C : "{destion} |= {masque}".

Voir aussi AND, NOT et XOR.

* OUT {source},{port} : Ecrit la valeur {source} (8 bits) sur le port {port} (16 bits). Le seul registre autorisé pour {port} est DX. Voir aussi IN.
* PUSH {valeur} : Met une [valeur] dans la pile.
- Retour à la liste des instructions -
* POP {registre} : Sort une valeur de la pile et la stocke dans un [registre].
* REP {instruction}: Répète l'instruction [instuction] ECX fois.
* RET {valeur} : Quitte la procédure en cours. Si des paramètres ont été envoyés au CALL, [xxxx] est le nombre d'octets envoyés qui sont à sortir de la pile. Voir aussi IRET.
* SHL {registre},{valeur} : Décalage binaire du {registre} de {valeur} vers la gauche (L = Left), les bits apparaissant à droite sont complétés par des zéros. Exemple : "mov al, 3; shl al,2" donne al = 12, car 3 = 0011 et son décalage 1100. En fait décaler de X revient à multiplier par 2^X (3*2^2 = 3*4 = 3*2*2 = 12).
* SHR {registre},{valeur} : Décalage binaire du {r egistre} de {valeur} vers la droite (R = Right), les bits apparaissant à gauche sont complétés par des zéros. Exemple : "mov al, 12; shr al,2" donne al = 3, car 12 = 1100 et son décalage 0011. En fait décaler de X revient à diviser par 2^X (12/(2^2) = 12/4 = 3).
* STOS[B/D/W] : Copie AL/AX/EAX dans l'octet/le mot/le double-mot ES:EDI (inverse de LODS[B/W/D]).
* SCAS[B/D/W] : Compare AL/AX/EAX à l'octet/le mot/le double-mot ES:EDI (permet de rechercher une valeur dans une chaine de caractères).
- Retour à la liste des instructions -
* TEST {source},{masque} : Teste si les bi ts {masque} de {source} sont posés ou non, et modifie ZF en conséquence (ZF posé si les bits de {source} sont posés, sinon ZF=0), ce qui sera exploitable avec "JZ" ou "JNZ" par la suite. L'instruction permet de tester un bit particulier de {source}.
En particulier : TEST {a},{a} = Teste si la variable {a} est à zéro (pose ou non le drapeau ZF).
* XOR {destination},{masque} : Applique un "ou exclusif" à {destination} par {masque}. Tout bit de {destination} est mis à 1 s'il diffère du bit correspondant de {masque}, et est mis à 0 s'il a la même valeur :
0 XOR 0 -> 0
0 XOR 1 -> 1
1 XOR 0 -> 1
1 XOR 1 -> 0
(c'est le même système que pour la multiplication de nombres relatifs : (+2)x(-3) = (-6), et (-3)x(-3)=9 par exemple)

XOR est utilisé en cryptographique car appliquer deux fois XOR à un même nombre avec le même "masque" redonne le nombre. Exemple :
24 xor 3 -> 27
27 xor 3 -> 27

XOR {a},{a} : Met à la variable {a} à zéro, beaucoup plus rapidement que "MOV {a},0" car XOR est une instruction de base du processeur.

Equivalant en Turbo Pascal : "{destination} := {destination} xor {masque}".
Equivalant en C : "{destion} ^= {masque}&quo t;.



Liste des interruptions :

J'ai trouvé des informations par-ci, par-là, donc ne me demandez pas de tout détailler, je n'en sais pas plus.

* 01h: Lancement d'un programme en mode pas-à-pas (permet de le débogueur).
* 02h: Interruption non masquable.
* 03h: Erreur de rupture.
* 04h: Erreur de dépassement (par calcul, exemple : "mov al, 200 ; add a l,140" -> 340 > 255 !!!).
* 05h "Imprime écran", imprime une copie de l'écran en mode texte.
* 08h: Horloge tournant à 18.6 clics/seconde.
* 09h: Lecture du clavier. La touche est codée avec un 'code clavier' (scan code en anglais) traduit en code standart ASCII par l'interruption 16h.
* 0Bh: Gestion du port COM2.
* 0Ch: Gestion du port COM1.
* 10h: Gestion de la carte vidéo.
* 11h : Liste de configuration (mémoire, nombre de ports COM, co-processeur, ...).
* 12h: Taille de la mémoire basse (640 Ko maximum).
* 13h: Gestion des différents disques.
* 14h: Gestion de l'interface sé rie (ports COM, voir les interruptions 0Bh et 0Ch).
* 15h: Manette de jeu, cassette et TopView.
* 16h: Conversion du code de la touche (lu par l'interruption 09h) en code standart ASCII.
* 17h: Gestion de l'imprimante.
* 18h: Rom BASIC.
* 19h: Rountine de chargement du DOS.
* 1Ah: Gestion de l'heure réelle.
* 1Bh: Surveille la pression de la combinaison de touche 'CTRL + C'.
* 1Ch: Chronomètre clic/clic à la vitesse de l'horloge 08h : 18.6 Hz. Sa valeur est stockée à l'emplacement 0040h: 0060h.
* 1Dh: La table d'initialisation vidéo.
* 1Eh: La table de paramètre des disquettes.
* 1Fh: La table des caractères graphiques.
* 20h: L'interruption DOS : Fin d'un programme au format COM (le format EXE est largement plus répendu aujourd'hui).
* 21h: L'interruption DOS : Fonctions universelles (disque dur, horloge, ...).
* 22h: L'interruption DOS : Adresse de fin de processus.
* 23h: L'interruption DOS : Surveille CTRL + PAUSE (ou CTRL + BREAK).
* 24h: L'interruption DOS : Erreur fatale d'un vecteur d'interruption.
* 25h: L'interruption DOS : Lecture directe d'un disque.
* 26h: L'interruption DOS : Ecriture directe sur un disque.
* 27h: L'interruption DOS : Programmes résidents.
* 28h: Fin d'un programme restant résidant en mémoire.< /li>
* 2Fh: Interruption pour plusieurs sous programmes. Gestion du réseau, driver CD-Rom MSCDEX, ...

Exemples concrets :
1) Lecture d'une touche au clavier

Principe : l'interruption 16h gère le clavier. Elle possède deux fonctions intéressantes : 00h, lecture d'une touche; et 01h, vérification de la présence d'une touche dans le tampon clavier. Mais si une touche est étendue, par exemple les touches fléchées, ou les touches "page haut", "insertion", etc., la fonction 00h nous reverra un code null (00h) comme code ASCII, puis le code ASCII de la touche étendue. Sachant que le c ode ASCII est toujours inférieur à 128, on pourra ajouter 128 aux codes étendus po
0
blux Messages postés 25999 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 23 avril 2024 3 289
6 févr. 2006 à 08:52
Bonjour,

quel est le raport avec la question de départ ?
0
Ch@oS Messages postés 41 Date d'inscription dimanche 4 décembre 2005 Statut Membre Dernière intervention 25 mars 2006 35
9 févr. 2006 à 05:45
Vous apprenez le langage Batch et ASM (assembleur).
@+
0
blux Messages postés 25999 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 23 avril 2024 3 289
9 févr. 2006 à 10:32
Je crois que la question de départ n'était pas vraiment celle-là...

Et pourquoi nous proposes-tu un batch sans explication et un cours d'assembleur (qui est, à mon avis, hors sujet) ?
0
Je n'ai pas de solus complete désoler... mais il existe plusieurs moyen

avec une batch file, on peut utiliser %date% pour avoir la date courante. En théorie, on n'aurait qu'a écrire "mkdir %date%". Cependant, l'écriture de la date est généralement 24/06/2004, or windows ne veut pas de nom de fichier ou de répertoire avec des "/" pour des raison de confusion entre '\' et '/'. il faut donc changer les options régionales dans le paneau de configuration pour que la date soit afficher dans un format ne contenant pas de caractères interdit. Il faut aller dans "Personalisé" puis "date" puis "date courte" et metre un truc du style "jj-MM-aa"

de cette facon, on peut utiliser "mkdir %date%" comme on le souhaite.

ce n'est pas une solus complete puisque le batch file ne fonctionera pas sur d'autre systemes... Si c'est dans ce but la... il faudra utilisé un autre moyen tel un fichier .vbs (visual basic script) ou un programme exécutable.


FrE
-1
non, pour creer un fichier dont le nom est la date du jour,

fichier aui se cree automatiquement par exemole tout les 1 du mois

je n'arrive pqs non plus... mon mkdir %DATE /T% ne fonctionne pas...

merci pour le coup de main
-1
coudezef Messages postés 9 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 7 juillet 2004
7 juil. 2004 à 12:19
non, pour creer un fichier dont le nom est la date du jour,

fichier aui se cree automatiquement par exemole tout les 1 du mois

je n'arrive pqs non plus... mon mkdir %DATE /T% ne fonctionne pas...

merci pour le coup de main
-1
sidarus Messages postés 387 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 12 avril 2007 112
7 juil. 2004 à 15:24
md c:\%date% me cré avec succès un dossier nommé "07.07.2004".

Comme le dit FrE c'est sans doute dû au format de la date qui doit contenir un caractère interdit.

Tapes echo %date%. Dans mon cas j'obtiens "07.07.2004". Et toi ?

~°sidarus°~
-1
coudezef Messages postés 9 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 7 juillet 2004
7 juil. 2004 à 15:31
merci Sidarus,

mais moi pour C:\>echo %date% il me renvoie %date%
et pour C:\>date il me renvoie Wed 07-07-2004
Enter the new date: (dd-mm-yy)

il faut dire que je suis en angleterre tu sasi avec un clavier pourri et peut etre des surprises... interminables !

ok sinon je vais essayer de pondre un petit VBScript...

je reste carement ouvert a tes conseils ;o)

merci

Jacques
-1
blux Messages postés 25999 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 23 avril 2024 3 289
7 juil. 2004 à 15:44
Salut,

j'ai migré récemment sur XP pro, au boulot, et j'ai réécrit mes batchs de backup en VBS, c'était trop la galère entre les fenêtres lancées en synchrone, celles qui ne veulent pas se fermer, les paramètres qui ne passent pas d'une appli à l'autre...

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
-1
coudezef Messages postés 9 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 7 juillet 2004
7 juil. 2004 à 15:47
d accord merci du conseil...

bon je continu a chercher...
-1
sidarus Messages postés 387 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 12 avril 2007 112
7 juil. 2004 à 15:49
Quelques éclaircissements...

DATE
c:\>date /?
DATE [date]

Entrez DATE sans paramètres pour afficher la date système et
être invité à la modifier. Appuyez sur ENTRÉE pour conserver la
même date.

Si les extensions de commandes sont activées, la commande DATE 
prend en charge le commutateur /T qui fait que la commande 
n'indique que la date, sans demander d'en entrer une nouvelle.


%DATE%
Cette variable retourne la valeur de la commande DATE.

Donc si :
C:\>date /t
07.07.2004


Alors :
C:\>echo %date%
07.07.2004


Et donc :
C:\>md c:\%date%

C:\>dir c:\

 Répertoire de c:\

07.07.2004  15:48    <REP>          07.07.2004
...


md %date% nous cré donc un dossier dont le nom est fournit par la commande DATE. Précises l'emplacement en tapant par ex : md c:\%date%.

Si tu tapes 2x de suite C:\>md c:\%date% tu obtiens ceci :
C:\>md c:\%date%

C:\>md c:\%date%
Un sous-répertoire ou un fichier c:\07.07.2004 existe déjà.

Ce qui prouve que le dossier existe. @+

~°sidarus°~
-1
coudezef Messages postés 9 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 7 juillet 2004
7 juil. 2004 à 15:57
Sidarus,

c vraiment bizarre, lorsque j'entre dans l'invite de commande date ou date /T il me sort la date en revanche le echo %date% ne donne rien d autre que %date% de meme lorsque je cree un fichier

joli nom... %date% ???

vraiment etrange

si tu as un mail j t envoie l impression ecran...

le mien : jacques (point) baboin (at) otis (point) com

jacques
-1
sidarus Messages postés 387 Date d'inscription jeudi 23 octobre 2003 Statut Contributeur Dernière intervention 12 avril 2007 112
7 juil. 2004 à 16:04
Re coudezef

Alors au lieu de :
C:\>echo %date%
07.07.2004


Toi tu obtiens ça :

C:\>echo %date%
%date%


C'est ça Ô_o ?

~°sidarus°~
-1
blux Messages postés 25999 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 23 avril 2024 3 289
7 juil. 2004 à 16:04
T'as essayé avec %%date%% ?

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
-1
coudezef Messages postés 9 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 7 juillet 2004
7 juil. 2004 à 16:07
oui c bien ce que j obtient et tient toi de rire, mais j'avais deja essayer %%date%%

comme quoi...

je ne sais vraiment pas !

je vais aller essayer sur un autre PC... c peut etre juste ca
-1