[Batch] - Manipulation fichiers en masse
Fermé
yaphilde
Messages postés
35
Date d'inscription
lundi 9 janvier 2017
Statut
Membre
Dernière intervention
25 octobre 2022
-
4 avril 2018 à 10:46
yaphilde Messages postés 35 Date d'inscription lundi 9 janvier 2017 Statut Membre Dernière intervention 25 octobre 2022 - 5 avril 2018 à 12:36
yaphilde Messages postés 35 Date d'inscription lundi 9 janvier 2017 Statut Membre Dernière intervention 25 octobre 2022 - 5 avril 2018 à 12:36
A voir également:
- [Batch] - Manipulation fichiers en masse
- Renommer des fichiers en masse - Guide
- Fichier batch - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
- Fichiers bin - Guide
2 réponses
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
Modifié le 4 avril 2018 à 23:44
Modifié le 4 avril 2018 à 23:44
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.
barnabe0057
Messages postés
14452
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
3 août 2024
4 917
Modifié le 5 avril 2018 à 12:37
Modifié le 5 avril 2018 à 12:37
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"
yaphilde
Messages postés
35
Date d'inscription
lundi 9 janvier 2017
Statut
Membre
Dernière intervention
25 octobre 2022
2
5 avril 2018 à 12:36
5 avril 2018 à 12:36
Merci Barnabe...Je test ça dans l'aprem...et je te tiens au jus.
Et surtout profites !
@++
Et surtout profites !
@++
5 avril 2018 à 10:46
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
5 avril 2018 à 12:25
5 avril 2018 à 12:27
Profites bien @++