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)
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
Merci par avance !