Bonsoir les Développeurs !
Je voudrais savoir si on pouvait lister dans un fichier .txt le contenu d'une archive rar ou zip gravée sur DVD. Merci de vouloir m'aider.
Bonsoir les Développeurs !
Je voudrais savoir si on pouvait lister dans un fichier .txt le contenu d'une archive rar ou zip gravée sur DVD. Merci de vouloir m'aider.
En se basant sur cette réponse get a list of files with winrar command line
Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 @echo off set "LogRAR=LogRar.txt" if exist %LogRAR% Del %LogRAR% set "strProgramFiles=%ProgramFiles%" if exist "%ProgramFiles(x86)%\WinRAR\UnRar.exe" set "Unrar=%ProgramFiles(x86)%\WinRAR\UnRar.exe" if exist "%ProgramFiles%\WinRAR\UnRar.exe" set "Unrar=%ProgramFiles%\WinRAR\UnRar.exe" for %%a in (*.rar) do "%unrar%" l %%a >> %LogRAR% Start "" %LogRAR% pause & exit
Bonsoir hackoofr et merci pour le Code BAT.
J'ai rencontré deux problèmes:
1. Si le nom du fichier .rar contient des espaces (ex. Dossier animaux domestiques.rar), le batch ne génère aucune liste.
2. Dans le listing, les caractères accentués et ç s'affichent bizarrement. Y a-t-il un moyen de les afficher normalement ?
MERCI.
Salut,
Pour les espace place tes variables comme "%%a", "%LogRAR%" entre guillemets.
Pour l'encodage de caractère sous Notepad++ ->
________________________________________________________________
N'oublie pas de faire une sauvegarde avant d'exécuter des scripts...
Si j'ai ton problème, un petit fait toujours plaisir!
________________________________________________________________
Bonjour devilsnake88 et merci pour ton aide.
J'ai ajouté les guillemets et maintenant le batch gère les fichiers .rar avec noms espacés comme Dossier animaux domestiques.rar
1. La liste obtenue dans le fichier LogRAR.txt affiche des caractères bizarres au lieu des caractères accentués et ç. Que faut-il faire dans ce cas ?
2. Je voudrais avoir Dossier animaux domestiques.txt au lieu de LogRAR.txt. Que faut-il ajouter ou modifier dans le batch ? Merci de pouvoir m'aider.
Pour ce qui est du nom du fichier de logs c'est facile:
Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 @echo off & cls setlocal enabledelayedexpansion set "strProgramFiles=%ProgramFiles%" if exist "%ProgramFiles(x86)%\WinRAR\UnRar.exe" set "Unrar=%ProgramFiles(x86)%\WinRAR\UnRar.exe" if exist "%ProgramFiles%\WinRAR\UnRar.exe" set "Unrar=%ProgramFiles%\WinRAR\UnRar.exe" for %%a in (*.rar) do ( set "LogRAR=%%~na.txt" if exist "!LogRAR!" Del "!LogRAR!" "%unrar%" l "%%a">>"!LogRAR!" ) Start "" "!LogRAR!" pause & exit
Pour l'encodage de caractères j'ai essayé avec CHCP mais rien de concluant.
Si quelqu'un a une idée elle est la bienvenue sinon converti manuellement le fichier sous Notepad++ comme dans mon screenshot précédent.
________________________________________________________________
N'oublie pas de faire une sauvegarde avant d'exécuter des scripts...
Si j'ai ton problème, un petit fait toujours plaisir!
________________________________________________________________
Tester ce :
Code BAT : 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 Mode con cols=65 lines=3 cls & color 9E Title Comment lister une archive RAR dans un fichier texte set "Folder_Log=%userprofile%\Desktop\RAR_Log" If Not exist "%Folder_Log%" MD "%Folder_Log%" set "All_RAR_Files_Log=%Folder_Log%\All_RAR_Files_Log.txt" if exist "%ProgramFiles(x86)%\WinRAR\UnRar.exe" set "Unrar=%ProgramFiles(x86)%\WinRAR\UnRar.exe" if exist "%ProgramFiles%\WinRAR\UnRar.exe" set "Unrar=%ProgramFiles%\WinRAR\UnRar.exe" Setlocal enabledelayedexpansion for %%f in (*.rar) do ( SET /a "Count+=1" set "TmpLogRAR=%Tmp%\%%~nf.txt" set "LogRAR[!Count!]="%Folder_Log%\%%~nf.txt" if exist "!TmpLogRAR!" Del "!TmpLogRAR!" Call :ShowMsg "%%f" "%unrar%" l "%%f" >>"!TmpLogRAR!" Cmd /u /c Type "!TmpLogRAR!" > "%Folder_Log%\%%~nf.txt" if exist "!TmpLogRAR!" Del "!TmpLogRAR!" ) If Exist "%All_RAR_Files_Log%" Del "%All_RAR_Files_Log%" For /L %%i in (1,1,%Count%) do ( Type "!LogRAR[%%i]!" >> "%All_RAR_Files_Log%" ) Start "" "%All_RAR_Files_Log%" Exit /b ::************************************************************ :ShowMsg <File> cls echo( echo Traitement de %1 exit /b ::************************************************************
Bonjour devilsnake88 et hackoofr et MERCI pour vos aides.
@ hackoofr. Les caractères accentués et ç sont affichés. Mais comment faire pour que le fichier Dossier animaux domestiques.txt s'enregistre automatiquement là où Dossier animaux domestiques.rar se trouve sans passer par Enregistrer sous... ? Merci.
J'ai testé votre code et j'ai remarqué que le batch crée le dossier RAR_Log sur le Bureau set "Folder_Log=%userprofile%\Desktop\RAR_Log". Dans ce dossier se trouvent 2 fichiers: All_RAR_Files_Log.txt et Dossier animaux domestiques.txt
Or je voudrais si cela est possible avoir le fichier Dossier animaux domestiques.txt là où se trouve l'archive Dossier animaux domestiques.rar . Merci de m'aider.
Dans ce cas tester ce :
Code BAT : 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 Mode con cols=65 lines=3 cls & color 9E Title Comment lister une archive RAR dans un fichier texte set "Folder_Log=%userprofile%\Desktop\RAR_Log" If Not exist "%Folder_Log%" MD "%Folder_Log%" set "All_RAR_Files_Log=%Folder_Log%\All_RAR_Files_Log.txt" if exist "%ProgramFiles(x86)%\WinRAR\UnRar.exe" set "Unrar=%ProgramFiles(x86)%\WinRAR\UnRar.exe" if exist "%ProgramFiles%\WinRAR\UnRar.exe" set "Unrar=%ProgramFiles%\WinRAR\UnRar.exe" Setlocal enabledelayedexpansion for %%f in (*.rar) do ( SET /a "Count+=1" set "TmpLogRAR=%Tmp%\%%~nf.txt" set "LogRAR[!Count!]=%~dp0%%~nf.txt" if exist "!TmpLogRAR!" Del "!TmpLogRAR!" Call :ShowMsg "%%f" "%unrar%" l "%%f" >>"!TmpLogRAR!" Cmd /u /c Type "!TmpLogRAR!" > "%~dp0%%~nf.txt" if exist "!TmpLogRAR!" Del "!TmpLogRAR!" ) If Exist "%All_RAR_Files_Log%" Del "%All_RAR_Files_Log%" For /L %%i in (1,1,%Count%) do ( Type "!LogRAR[%%i]!" >> "%All_RAR_Files_Log%" ) Start "" "%All_RAR_Files_Log%" Exit /b ::************************************************************ :ShowMsg <File> cls echo( echo Traitement de %1 exit /b ::************************************************************
Merci infiniment hackoofr. C'est ce que je voulais. Je suis un peu gêné de vous demander cela: comment faire pour que le batch ne crée pas le dossier RAR_Log et son contenu sur le bureau ?
No Problem
Si vous avez d'autres questions surtout n'hésitiez pas
Code BAT : 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
38
39 @echo off Mode con cols=65 lines=3 cls & color 9E Title Comment lister une archive RAR dans un fichier texte Rem set "Folder_Log=%userprofile%\Desktop\RAR_Log" Rem If Not exist "%Folder_Log%" MD "%Folder_Log%" Rem set "All_RAR_Files_Log=%Folder_Log%\All_RAR_Files_Log.txt" set "All_RAR_Files_Log=%~dp0\All_RAR_Files_Log.txt" if exist "%ProgramFiles(x86)%\WinRAR\UnRar.exe" set "Unrar=%ProgramFiles(x86)%\WinRAR\UnRar.exe" if exist "%ProgramFiles%\WinRAR\UnRar.exe" set "Unrar=%ProgramFiles%\WinRAR\UnRar.exe" Setlocal enabledelayedexpansion for %%f in (*.rar) do ( SET /a "Count+=1" set "TmpLogRAR=%Tmp%\%%~nf.txt" set "LogRAR[!Count!]=%~dp0%%~nf.txt" if exist "!TmpLogRAR!" Del "!TmpLogRAR!" Call :ShowMsg "%%f" "%unrar%" l "%%f" >>"!TmpLogRAR!" Cmd /a /c Type "!TmpLogRAR!" | find /V "UNRAR" > "%Tmp%\%%~nf_.txt" Cmd /u /c Type "%Tmp%\%%~nf_.txt" > "%~dp0%%~nf.txt" if exist "!TmpLogRAR!" Del "!TmpLogRAR!" ) If Exist "%All_RAR_Files_Log%" Del "%All_RAR_Files_Log%" For /L %%i in (1,1,%Count%) do ( Type "!LogRAR[%%i]!" >> "%All_RAR_Files_Log%" ) Start "" "%All_RAR_Files_Log%" Exit /b ::************************************************************ :ShowMsg <File> cls echo( echo Traitement de %1 exit /b ::************************************************************
C'est parfait hackoofr! MERCI infiniment pour votre aide précieuse. Je tiens également à remercier devilsnake88 . Sans vous deux, je serais perdu. Je marque le sujet comment résolu et à la prochaine je l'espère.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager