Bonjour,

Cherchant à supprimer dans divers Fichiers *Log.txt des sous éléments définis comme suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Pour chaque ligne lue de Fichier
Pour chaque répertoire X (chemin sans point)
Si sous-élément X\* existe alors supprimer X\*
voici l'abominable code :

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
IF EXIST Doublons.txt DEL Doublons.txt

:: SETLOCAL ENABLEDELAYEDEXPANSION

FOR %%G IN (*Log.txt) DO (
(ECHO # Analyse %%G
ECHO.)>> Doublons.txt
FOR /F "TOKENS=*" %%A IN ('Outil\GREP -v "\." %%G ^| Outil\SED "s/\\/\\\\/g;s/%%/\\%%/g"') DO (
FINDSTR /C:"%%A\\" %%G > NUL & IF NOT ERRORLEVEL 1 CALL :Suppression
GOTO :EOF
))

:Suppression
ECHO SUGGESTION ^(%%G^) : %%A| Outil\SED "s/\\\\/\\/g;s/\\%%/%%/g;s/$/\r/g">> Doublons.txt
FINDSTR /C:"%1\\" %%G>> Doublons.txt
ECHO.>> Doublons.txt
FINDSTR /C:"%%A\\" %%G
SET /P choix=Supprimer ces doublons O / N
ECHO.
ECHO.
IF %choix%==o (Outil\SED -i "/%%A\\.*$/d;s/$/\r/g" %%G)
GOTO :EOF

NOTEPAD Doublons.txt
pour résumer j'aimerais qu'il soit demandé de valider les propositions de suppression dans le terminal, j'arrangerais ce qui est moche un peu plus tard. Dans l'immédiat le souci c'est %%G et %%A qui sont perdus dans :Suppression. Même si actuellement c'est commenté, j'ai tenté de jouer sur l'expansion retardée, en définissant SET Log=%%G et en appelant !Log! mais ça ne va pas.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[...]

>ECHO SUGGESTION (%G) : %A  | Outil\SED "s/\\\\/\\/g;s/\\%/%/g;s/$/\r/g" 1>>Doublons.txt

>FINDSTR /C:"\\" %G 1>>Doublons.txt
FINDSTR: Impossible d'ouvrir %G

>ECHO.1>>Doublons.txt

>FINDSTR /C:"%A\\" %G
FINDSTR: Impossible d'ouvrir %G

>SET /P choix=Supprimer ces doublons O / N
Supprimer ces doublons O / N
Est-ce que quelqu'un aurait une piste un peu plus élaborée sur les grandes lignes de ce code ?

Merci