Code Bat pour regrouper des fichiers épars sur un DD

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
Genele
Batcheur débutant
Messages : 29
Enregistré le : 21 avr. 2018 16:21

Code Bat pour regrouper des fichiers épars sur un DD

Message par Genele »

Bonjour à tous et à toutes....
Un petit code qui sert à regrouper les fichiers éparpillés sur un DD.
C'est aussi un condensé de quelques commandes sauf les boucles et surtout FOR que j'ai du mal à comprendre.
Sur mon PC il fonctionne très bien mais si un expert veut bien le contrôler cela serait bien.
Quoi qu'il en soit, avoir un avis compétent me fera plaisir.
Toute critique me fera avancer.

**************Début du code************************
echo off & setlocal enabledelayedexpansion enableextensions
Title REGROUPEMENT de FICHIERS
Color 0A
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º REGROUPEMENT de FICHIERS º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Echo "Bonjour cher %username%"
Echo.

echo Nous sommes le : %date% et il est : %time%

@echo off

:menu
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º MENU º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

echo.
echo 1.Regroupement de fichiers

echo 2.Quitter LE Programme
:Debut

echo.
set /p reponse="Que voulez-vous faire ? "

If /i "%reponse%"=="1" goto :batch1
If /i "%reponse%"=="2" goto :batch2

IF "%reponse%" =="" goto :menu echo Vous n'avez rien rentre Recommencez :

ECHO. VOUS AVEZ CHOISI LE PROGRAMME NUMERO %reponse%

ECHO Je me mets tout de suite au travail ......

REM ------------------------------------------------

:batch1

echo.Vous avez choisi de regrouper des fichiers
echo.
echo Ce batch permet de regrouper dans un seul dossier de votre choix
echo les fichiers ayant une meme extension eparpilles sur un disque dur.
echo.
echo echo Pour que le Batch Fonctionne il faut que ce bat soit
echo echo enregistre a la racine du C:\.
echo echo Ainsi que Xcopy.exe qui doit se touver a la racine de chaques disques dur.
echo %CD%
echo.
echo.

set /P A=Sur quel lecteur voulez vous faire la recherche, SVP C, D, E ou autre :
echo Vous avez tapé %A%
IF "%A%" =="" goto :Debut echo Vous n'avez rien rentre Recommencez :
echo.
echo.
Set lect=%A%:

:Debut1
set /P Ext=Quel type de fichiers "bat; txt; etc etc, SVP" :
IF "%Ext%" =="" goto :Debut1 Vous n'avez rien rentre Recommencez :
echo.
echo.

echo Vous avez tapé %Ext% ?
set fichs=*.%Ext%
echo %fichs%
:Debut2
set /P MonLec=Sur quel lecteur voulez vous enregistrer votre dossier C, autre :
Echo Vous avez tape %Monlec%
IF "%Monlec%" =="" goto Debut2 Vous n'avez rien rentre Recommencez :
set REP=%Monlec%:\
echo.
echo.
:Debut3
set /P Monfich=Dans quel Dossier voulez vous enregistrer vos fichiers :

echo Vous avez tapé %Monfich%
IF "%Monfich%" =="" goto :Debut3 Vous n'avez rien rentre Recommencez :
set Mondossier=%REP%%Monfich%
echo %Mondossier%
echo.
echo.
echo Copie des fichiers sur %lect% %fichs% qui seront enregistres dans %Mondossier%
echo %lect%
pause
%lect%
For /R %lect% %%I in ("%fichs%") do xcopy /f/y "%%I" %Mondossier%
echo.
Endlocal

:batch2

echo  **************************************
echo *** QUITTER ***
echo **************************************


echo Voulez-vous quitter le programme ? Y or N
SET /P REPONSE2=Reponse :
IF '%REPONSE2%' == '' GOTO fin
IF %REPONSE2% == y GOTO fin
IF %REPONSE2% == Y GOTO fin
IF %REPONSE2% == n GOTO menu & cls
IF %REPONSE2% == N GOTO menu & cls

:fin

Echo.

echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Francis Genele º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Exit
Merci pour vos réponses
Cordialement

Genele
barnabe0057
SuperBatcher
Messages : 105
Enregistré le : 24 janv. 2017 13:41

Re: Code Bat pour regrouper des fichiers épars sur un DD

Message par barnabe0057 »

Bonjour,

Merci pour ta contribution, cette partie peut être améliorée :

Code : Tout sélectionner

echo Voulez-vous quitter le programme ? Y or N
SET /P REPONSE2=Reponse :
IF '%REPONSE2%' == '' GOTO fin
IF %REPONSE2% == y GOTO fin
IF %REPONSE2% == Y GOTO fin
IF %REPONSE2% == n GOTO menu & cls
IF %REPONSE2% == N GOTO menu & cls
Comme ceci :

Code : Tout sélectionner

echo Voulez-vous quitter le programme ? Y or N
SET /P REPONSE2=Reponse :
IF NOT DEFINED REPONSE2 GOTO fin
IF /i "%REPONSE2%"=="y" GOTO fin
IF /i "%REPONSE2%"=="n" GOTO menu & cls
Genele
Batcheur débutant
Messages : 29
Enregistré le : 21 avr. 2018 16:21

Re: Code Bat pour regrouper des fichiers épars sur un DD

Message par Genele »

Bonsoir
Merci pour le conseil. Je vais en tenir compte.
En fait j'ai fait ce petit menu pour tenir compte de la différence entre majuscule et minuscule dans la réponse.
Mais bon je vais tester votre solution.
Pour le moment j'essaye de réaliser un bat pour extraire une chaîne et la remplacer dans un fichier html....
Cela va m'occuper un bout de temps et l'occasion de bosser sur ces satanés boucle avec For....

Bonne soirée.

Cordialement

Genele
Genele
Batcheur débutant
Messages : 29
Enregistré le : 21 avr. 2018 16:21

Re: Code Bat pour regrouper des fichiers épars sur un DD

Message par Genele »

Bonjour
Merci pour l'intérêt que vous avez pris à mon petit Bat.
Effectivement, nul besoin de copier xcopy.exe à la racine du DD car celui de windows suffit.
J'ai fait cela dans un soucis d'efficacité et surtout parce que je suis encore un véritable néophyte....
Mais comme cela ne change pas grand chose.....
Oui le bat copie les fichiers (mp3 pour moi) dans un nouveau répertoire qui est crée à la demande.
Donc pas besoin de tester si il existe puisqu'il est conçu par le bat.
Par contre, remarque pertinente, c'est d'effectuer une recherche des DD présents.
Moi je sais quels sont mes DD connectés mais j'aurais du tenir compte que ce n'est pas évident pour tout le monde.
Je viens aussi de comprendre que faire un Bat pour soi, et pour d'autres n'est pas la même chose.....
Comment détecter les DD connectés et afficher leurs lettres ????????
Je vais essayer de rectifier le bat.
Pas évident car je n'ai pas la moindre idée du code pour y arriver.........

Encore merci

Cordialement

Genele
Genele
Batcheur débutant
Messages : 29
Enregistré le : 21 avr. 2018 16:21

Code Bat pour regrouper des fichiers épars sur un DD

Message par Genele »

Bonjour à tous.
J'ai modifier le code tant bien que mal ce qui m'a pris une bonne partie de la journée...
Jai galéré pour que le bat détecte les dd installés sur le pc..
Pour un débutant ce n'est pas facile.
Enfin cela fonctionne.
Pour les autres suggestions je m'y atelle demain.
Code modifié :

echo off & setlocal enabledelayedexpansion enableextensions
Title REGROUPEMENT de FICHIERS
Color 0A
Mode con cols=55 lines=30
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º REGROUPEMENT de FICHIERS º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Echo "Bonjour cher %username%"
Echo.

echo Nous sommes le : %date% et il est : %time%

@echo off

:menu
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º MENU º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ

echo.
echo 1.Regroupement de fichiers

echo 2.Quitter LE Programme
:Debut

echo.
set /p reponse="Quel programme voulez-vous executer ? "

If /i "%reponse%"=="1" goto :batch1
If /i "%reponse%"=="2" goto :batch2

IF "%reponse%" =="" goto :menu echo Vous n'avez rien rentre Recommencez :


ECHO. VOUS AVEZ CHOISI LE PROGRAMME NUMERO %reponse%

ECHO Je me mets tout de suite au travail ......

REM ------------------------------------------------

:batch1

echo.Vous avez choisi de regrouper des fichiers
echo.
echo.Ce batch permet de regrouper dans un seul dossier de votre choix
echo.les fichiers ayant une meme extension eparpilles sur un disque dur.
echo.
echo.Pour que le Batch Fonctionne il faut que ce bat soit
echo.enregistre a la racine du C:\.

echo %CD%
echo.
echo.
Echo.Recherche de vos DD...
wmic volume get label,Name,Drivetype,"File System" | find "NTFS" >>c:\Recherdd.tmp
FOR /F "tokens=* delims=" %%i in ('type "c:\Recherdd.tmp" ^|Find ":\"') do (
echo.%%i
echo.
)
Echo.Liste des DDs connectes au Pc
del c:\Recherdd.tmp

set /P A=Sur quel lecteur voulez vous faire la recherche :
echo Vous avez tapé %A%
IF "%A%" =="" goto :Debut echo Vous n'avez rien rentre Recommencez :
echo.
echo.
Set lect=%A%:

:Debut1
set /P Ext=Quel type de fichiers "bat; txt; etc etc, SVP" :
IF "%Ext%" =="" goto :Debut1 Vous n'avez rien rentre Recommencez :
echo.
echo.

echo Vous avez tapé %Ext% ?
set fichs=*.%Ext%
echo %fichs%
:Debut2
set /P MonLec=Sur quel lecteur voulez vous enregistrer votre dossier C, autre :
Echo Vous avez tape %Monlec%
IF "%Monlec%" =="" goto Debut2 Vous n'avez rien rentre Recommencez :
set REP=%Monlec%:\
echo.
echo.
:Debut3
set /P Monfich=Dans quel Dossier voulez vous enregistrer vos fichiers :

echo Vous avez tapé %Monfich%
IF "%Monfich%" =="" goto :Debut3 Vous n'avez rien rentre Recommencez :
set Mondossier=%REP%%Monfich%
echo %Mondossier%
echo.
echo.
echo Copie des fichiers sur %lect% %fichs% qui seront enregistres dans %Mondossier%
echo %lect%
pause
%lect%
For /R %lect% %%I in ("%fichs%") do xcopy /f/y "%%I" %Mondossier%
echo.
Endlocal

:batch2

echo  **************************************
echo *** QUITTER ***
echo **************************************


echo Voulez-vous quitter le programme ? Y or N
SET /P REPONSE2=Reponse :
IF '%REPONSE2%' == '' GOTO fin
IF %REPONSE2% == y GOTO fin
IF %REPONSE2% == Y GOTO fin
IF %REPONSE2% == n GOTO menu & cls
IF %REPONSE2% == N GOTO menu & cls

:fin

Echo.

echo.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Francis Genele º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
Exit

Encore merci pour votre aide

Genele
Répondre