[Batch] - Manipulation fichiers en masse
yaphilde
Messages postés
35
Date d'inscription
Statut
Membre
Dernière intervention
-
yaphilde Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
yaphilde Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
Bonjour et merci d'avance de l'attention que vous porterez à ma demande,
Nous sommes en train de restructurer notre infrastructure fichiers.
J'ai un modèle actuellement en production que nous devons transposer dans une nouvelle arborescence
Arborescence actuellement en production pour chaque usager (il y en a des centaines). Chaque usager à la même arborescence.
---------------------------NOM de l'usager-----------------------
+---R1 Accueillir
| +---01 - Dossier admission
| | +---01 - 1er contact
| | +---02 - Bilans
| | +---03 - Semaine observation
| | +---04 - Courriers
| | \---05 - Dossier administratif Accueil
| +---02 - MDPH
| | +---01 - Dossier
| | \---02 - Notification
| \---03 - Contrat de séjour - DIPC
+---R2 Accompagner
| +---01 - PIA
| | +---01 - PPS
| | +---02 - GEVASCO
| | +---03 - Plan de compensation
| | +---04 - Projet de soins
| | +---05 - PIA
| | \---06 - Suivi PIA
| +---02 - EDT
| | +---2015 - 2016
| | \---2017 - 2018
| +---03 - Suivi administratif
| | +---01 - Courriers
| | +---02 - RDV Famille
| | \---03 - Evenements Indésirables
..........
...............
...................
-----------------------Fin de l'arborescence de production-------------------------
Nous souhaitons mettre l'arborescence suivante en place
---------------------------NOM de l'usager-----------------------
+---administratif
| +---Adresses
| +---Autre décision administrative
| +---Décision administrative CDA
| +---Environnement
| +---Equipe soignante et d'accompagnement
| +---Identité
| +---Membres de la famille
| +---Mesure de protection
| +---Parcours de la personne
| +---Signatures
| +---Séjours
| \---Transport
+---Dossier de Liaison d'Urgence DLU
| +---DLU administratif
| \---DLU médical
\---Parcours de vie
+---Alimentation
| +---Allergies et troubles associés
| +---Modalités
| \---Régimes
+---Comportement
| +---Comportement habituel
| +---Intérêt et occupations favorites
| +---Sommeil - Modalités
| +---Sommeil - Troubles
| +---Troubles du comportement
| \---Vie affective et sexuelle
+---Dépendance et autonomie
| +---Déplacements et transferts
| +---Sphinctérienne
| \---Toilette-habillage-installation
.........
..................
.........................
-----------------------Fin de la nouvelle arborescence de production-------------------------
Donc ma problématique est:
1 - Pour chaque dossier usager trouver dans l'ancienne arborescence, je créer une structure correspondant à ma nouvelle arborescence. (je sais le faire un par un mais je sais pas bien le faire en automatique ( boucle for /f)
2 - Je souhaite, par exemple, copier tous les fichiers contenus dans le répertoire
"C:\NOM de l'usager\R1 Accueillir\01 - Dossier admission\05 - Dossier administratif Accueil"
vers
"F:\NOM de l'usager\administratif\Autre décision administrative"
3 - Je prends un autre cas proche du précédent mais là il faudrait copier tous les fichiers contenus dans un dossier et tout les fichiers contenu dans ces sous-dossiers vers un nouvel emplacement, par exemple
Copie de tous les fichiers contenus dans
"C:\NOM de l'usager\R2 Accompagner\tous les fichiers contenu dans le dossier et les sous dossier"
vers
""F:\NOM de l'usager\Parcours de vie\Comportement\Comportement habituel\
PS1: Je précise que les fichiers et les dossiers qui sont traités sont susceptibles d'avoir des accents.
PS2: Dans le traitement souhaité je ne souhaite pas copier les dossiers, juste l'ensemble des fichiers (différents formats)
Encore une fois merci d'avance de l'attention qui sera faite à ma demande.
yaphilde
Nous sommes en train de restructurer notre infrastructure fichiers.
J'ai un modèle actuellement en production que nous devons transposer dans une nouvelle arborescence
Arborescence actuellement en production pour chaque usager (il y en a des centaines). Chaque usager à la même arborescence.
---------------------------NOM de l'usager-----------------------
+---R1 Accueillir
| +---01 - Dossier admission
| | +---01 - 1er contact
| | +---02 - Bilans
| | +---03 - Semaine observation
| | +---04 - Courriers
| | \---05 - Dossier administratif Accueil
| +---02 - MDPH
| | +---01 - Dossier
| | \---02 - Notification
| \---03 - Contrat de séjour - DIPC
+---R2 Accompagner
| +---01 - PIA
| | +---01 - PPS
| | +---02 - GEVASCO
| | +---03 - Plan de compensation
| | +---04 - Projet de soins
| | +---05 - PIA
| | \---06 - Suivi PIA
| +---02 - EDT
| | +---2015 - 2016
| | \---2017 - 2018
| +---03 - Suivi administratif
| | +---01 - Courriers
| | +---02 - RDV Famille
| | \---03 - Evenements Indésirables
..........
...............
...................
-----------------------Fin de l'arborescence de production-------------------------
Nous souhaitons mettre l'arborescence suivante en place
---------------------------NOM de l'usager-----------------------
+---administratif
| +---Adresses
| +---Autre décision administrative
| +---Décision administrative CDA
| +---Environnement
| +---Equipe soignante et d'accompagnement
| +---Identité
| +---Membres de la famille
| +---Mesure de protection
| +---Parcours de la personne
| +---Signatures
| +---Séjours
| \---Transport
+---Dossier de Liaison d'Urgence DLU
| +---DLU administratif
| \---DLU médical
\---Parcours de vie
+---Alimentation
| +---Allergies et troubles associés
| +---Modalités
| \---Régimes
+---Comportement
| +---Comportement habituel
| +---Intérêt et occupations favorites
| +---Sommeil - Modalités
| +---Sommeil - Troubles
| +---Troubles du comportement
| \---Vie affective et sexuelle
+---Dépendance et autonomie
| +---Déplacements et transferts
| +---Sphinctérienne
| \---Toilette-habillage-installation
.........
..................
.........................
-----------------------Fin de la nouvelle arborescence de production-------------------------
Donc ma problématique est:
1 - Pour chaque dossier usager trouver dans l'ancienne arborescence, je créer une structure correspondant à ma nouvelle arborescence. (je sais le faire un par un mais je sais pas bien le faire en automatique ( boucle for /f)
2 - Je souhaite, par exemple, copier tous les fichiers contenus dans le répertoire
"C:\NOM de l'usager\R1 Accueillir\01 - Dossier admission\05 - Dossier administratif Accueil"
vers
"F:\NOM de l'usager\administratif\Autre décision administrative"
3 - Je prends un autre cas proche du précédent mais là il faudrait copier tous les fichiers contenus dans un dossier et tout les fichiers contenu dans ces sous-dossiers vers un nouvel emplacement, par exemple
Copie de tous les fichiers contenus dans
"C:\NOM de l'usager\R2 Accompagner\tous les fichiers contenu dans le dossier et les sous dossier"
vers
""F:\NOM de l'usager\Parcours de vie\Comportement\Comportement habituel\
PS1: Je précise que les fichiers et les dossiers qui sont traités sont susceptibles d'avoir des accents.
PS2: Dans le traitement souhaité je ne souhaite pas copier les dossiers, juste l'ensemble des fichiers (différents formats)
Encore une fois merci d'avance de l'attention qui sera faite à ma demande.
yaphilde
A voir également:
- [Batch] - Manipulation fichiers en masse
- Renommer des fichiers en masse - Guide
- Fichier batch - Guide
- Fichiers epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
2 réponses
Bonjour,
Pour la première partie tu peux faire comme ça :
La partie soulignée est à modifier à ta guise.
Concernant les parties 2 et 3 il faudrait la liste complète des traitements que tu veux opérer.
Pour la première partie tu peux faire comme ça :
@echo off
setlocal enableextensions
chcp 1252 >nul
set racine=%USERPROFILE%\Desktop\Yaphilde
if not exist "%racine%" (mkdir "%racine%")
cd /d %racine%
set Administratif="Adresses" "Autre décision administrative" "Décision administrative CDA" "Environnement" "Equipe soignante et d'accompagnement" "Identité" "Membres de la famille" "Mesure de protection" "Parcours de la personne" "Signatures" "Séjours" "Transport"
set DossierLiaison="DLU administratif" "DLU médical" "Parcours de vie"
set Alimentation="Allergies et troubles associés" "Modalités" "Régimes"
set Comportement="Comportement habituel" "Intérêt et occupations favorites" "Sommeil - Modalités" "Sommeil - Troubles" "Troubles du comportement" "Vie affective et sexuelle"
set Dep_autonomie="Déplacements et transferts" "Sphinctérienne" "Toilette-habillage-installation"
call :arbre "Administratif" %Administratif%
call :arbre "Dossier de Liaison d'Urgence DLU" %DossierLiaison%
call :arbre "Alimentation" %Alimentation%
call :arbre "Comportement" %Comportement%
call :arbre "Dépendance et autonomie" %Dep_autonomie%
pause
exit
:arbre
if not exist "%~1" (mkdir "%~1")
pushd "%~1"
for %%A in (%*) do (if not exist "%%~A" (mkdir "%%~A" && echo %%~A))
rmdir "%~1"
popd
goto :eof
rem
La partie soulignée est à modifier à ta guise.
Concernant les parties 2 et 3 il faudrait la liste complète des traitements que tu veux opérer.
Voilà une nouvelle version (dans laquelle je te laisse du travail) :
Alors le principe ici c'est de s'appuyer sur des fichiers textes qui contiendront les traitements à effectuer.
traitements2.ini correspond à ta demande n°2
traitements3.ini correspond à ta demande n°3
Ces 2 fichiers seront de la forme %source% - %destination%, par exemple :
"C:\NOM de l'usager\R1 Accueillir\01 - Dossier admission\01 - 1er contact"###"F:\NOM de l'usager\Dossier de Liaison d'Urgence DLU\DLU administratif"
@echo off
setlocal enableextensions
chcp 1252 >nul
set racine=%USERPROFILE%\Desktop\Yaphilde
if not exist "%racine%" (mkdir "%racine%")
cd /d %racine%
set Administratif="Adresses" "Autre décision administrative" "Décision administrative CDA" "Environnement" "Equipe soignante et d'accompagnement" "Identité" "Membres de la famille" "Mesure de protection" "Parcours de la personne" "Signatures" "Séjours" "Transport"
set DossierLiaison="DLU administratif" "DLU médical" "Parcours de vie"
set Alimentation="Allergies et troubles associés" "Modalités" "Régimes"
set Comportement="Comportement habituel" "Intérêt et occupations favorites" "Sommeil - Modalités" "Sommeil - Troubles" "Troubles du comportement" "Vie affective et sexuelle"
set Dep_autonomie="Déplacements et transferts" "Sphinctérienne" "Toilette-habillage-installation"
cls & echo. & echo ########## Création de la nouvelle arborescence ##########
echo.
call :arbre "Administratif" %Administratif%
call :arbre "Dossier de Liaison d'Urgence DLU" %DossierLiaison%
call :arbre "Alimentation" %Alimentation%
call :arbre "Comportement" %Comportement%
call :arbre "Dépendance et autonomie" %Dep_autonomie%
timeout /t 5
cls & echo. & echo ########## Clonage des fichiers vers la nouvelle arborescence ##########
echo.
call :copie_classique "%USERPROFILE%\Desktop\traitements2.ini"
call :copie_recursive "%USERPROFILE%\Desktop\traitements3.ini"
echo. & pause
exit
:arbre
if not exist "%~1" (mkdir "%~1")
pushd "%~1"
for %%A in (%*) do (if not exist "%%~A" (mkdir "%%~A" && echo # %%~A))
rmdir "%~1"
popd
goto :eof
:copie_classique
for /f "usebackq tokens=1,2 delims=#" %%A in ("%~1") do (
for /f "delims=" %%E in ('2^>nul dir /b /a-d "%%~A"') do (xcopy "%%~A\%%~E" "%%~B" /V /C /F /G /K /B >nul & echo %%~A\%%~E)
)
goto :eof
:copie_recursive
for /f "usebackq tokens=1,2 delims=#" %%A in ("%~1") do (
for /f "delims=" %%E in ('2^>nul dir /s /b /a-d "%%~A"') do (xcopy "%%~E" "%%~B" /V /C /F /G /K /B >nul & echo %%~E)
)
goto :eof
rem
Alors le principe ici c'est de s'appuyer sur des fichiers textes qui contiendront les traitements à effectuer.
traitements2.ini correspond à ta demande n°2
traitements3.ini correspond à ta demande n°3
Ces 2 fichiers seront de la forme %source% - %destination%, par exemple :
"C:\NOM de l'usager\R1 Accueillir\01 - Dossier admission\01 - 1er contact"###"F:\NOM de l'usager\Dossier de Liaison d'Urgence DLU\DLU administratif"
Je vais tester ton code dans la journée pour la partie 1.
En fait pour les parties 2 et 3, il y a énormément de traitement à faire. Et le but du jeu n'est pas que tu fasses tout :-p....heuuu quoi que ;-)! ....L'idée c'est que je puisse comprendre la logique afin de la reproduire sur l'ensemble de mon infrastructure.
Mais je vais essayé d'être plus explicite sur ces demandes:
Demande 2: copier tous les fichiers contenus dans un répertoire et qui ne contient pas de sous répertoire.
Exemple:
Copier tous les fichiers qui sont contenus dans "dossier d'admission" dans le dossier de destination "DLU administratif"
source - Fichiers contenus dans 01 - contact
+---R1 Accueillir
| +---01 - Dossier admission
| | +---01 - 1er contact
vers
destination
+---Dossier de Liaison d'Urgence DLU
| +---DLU administratif
donc en chemin ca donne ca:
"C:\NOM de l'usager\R1 Accueillir\01 - Dossier admission\01 - 1er contact"
vers
"F:\NOM de l'usager\Dossier de Liaison d'Urgence DLU\DLU administratif"
Demande 3: copier tous les fichiers contenus dans un répertoire qui contient lui-même des sous répertoires. Je ne souhaite pas récupéré l’arborescence je ne souhaite que récupérer les fichiers qui en font partis.
Exemple:
C'est un peu la même chose
source - Fichiers contenus dans TOUT le dossier "R2 Accompagner" ET tous les FICHIERS contenus dans les sous répertoires
+---R2 Accompagner
| +---01 - PIA
| | +---01 - PPS
| | +---02 - GEVASCO
| | +---03 - Plan de compensation
| | +---04 - Projet de soins
| | +---05 - PIA
Destination
+---Alimentation
| +---Allergies et troubles associés
| +---Modalités
donc en chemin ca donne ca:
"C:\NOM de l'usager\R2 Accompagner\ *.* (sans les répertoires)"
vers
"F:\NOM de l'usager\Alimentation\Modalités"
J'espère que je suis à peu près clair et que c'est faisable.
Merci encore Barnabe de m'aider.
@++ et excellente journée à toi
Profites bien @++