Bonjour à tous,
je vous expose mon problème :
1) ce que j'ai : des fichiers avec un noms hashés en désordre dans un même dossier
2) ce que je veux : des fichiers bien renommés replacés dans une arborescence précise
==> J'ai une requète oracle (un pauvre select de trois champs) qui me donne
- le nom de fichier hashé avec son extension
- le nom du fichier correct avec son extension
- le path dans lequel doit se trouver le fichier renommé à la fin
Pour information, le dossier d'origine est un dossier fixe.
Avec mon .bat actuel (réalisé via différentes sources du site), et ne lisant qu'un fichier .txt contenant uniquement la liste de tous les noms hashés je sais :
- vérifier l'existence du fichier source
- vérifier la présence ou non du fichier cible
- copier le fichier (toujours hashé) dans un unique dossier
- faire un rapport de chaque cas d'erreur
il me manque donc le plus dur ...
- changer la source pour ne plus avoir uniquement le nom hashé mais aussi le vrai nom et son path (fichier csv ? autre ?)
- récupérer le fichier source, le renommer puis le déplacer à son bon emplacement...
- et/ou tout faire d'un coup le .bat (requete, copie, renommage, déplacement ...)
Est-ce que qq'un aurait un début de réponse sur laquelle je pourrais m'appuyer svp ?
Mon code actuel (qui vient lire un fichier de conf)
Merci par avance !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 @echo off echo -------------------------- echo Copie de fichiers en cours echo -------------------------- echo. rem --- lecture dans un fichier config.ini les information concernant les dossiers rem --- A (source) et B (destination) + chemin du fichier txt +chemin du rapport for /f "tokens=1,2 delims==" %%i in ('findstr /b /c:"chemin_dossier_A=" config.ini') do set chemin_dossier_A=%%j for /f "tokens=1,2 delims==" %%i in ('findstr /b /c:"chemin_dossier_B=" config.ini') do set chemin_dossier_B=%%j for /f "tokens=1,2 delims==" %%i in ('findstr /b /c:"chemin_fichier_txt=" config.ini') do set chemin_fichier_txt=%%j for /f "tokens=1,2 delims==" %%i in ('findstr /b /c:"chemin_rapport_txt=" config.ini') do set chemin_rapport_txt=%%j for /f %%i in (%chemin_fichier_txt%\liste.txt) do ( if exist "%chemin_dossier_A%\%%i" ( if not exist "%chemin_dossier_B%\%%i" ( xcopy "%chemin_dossier_A%\%%i" "%chemin_dossier_B%\" /s/e/i/f >nul 2>&1 if %errorlevel% EQU 0 ( echo Fichier %%i OK >>%chemin_rapport_txt%\rapport.txt ) else ( echo Impossible de copier le fichier %%i >>%chemin_rapport_txt%\rapport.txt ) ) else ( echo Le fichier %%i est deja present dans le répertoire cible >>%chemin_rapport_txt%\rapport.txt ) ) else ( echo Fichier %%i non present dans fichier source >>%chemin_rapport_txt%\rapport.txt ) ) echo ------------ fin de traitement ------------ >>%chemin_rapport_txt%\rapport.txt rem --- ouverture de rapport.txt start %windir%\system32\notepad.exe %chemin_rapport_txt%\rapport.txt
Partager