Batch - Programme de déplacement de fichiers en masse.

Fermé
fantoski - Modifié par fantoski le 21/06/2016 à 12:31
barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 - 21 avril 2017 à 19:48
Bonjour,



Je suis un débutant de la programmation en Batch et donc je m'en sers peux. Seulement, en l’occurrence j'ai besoin d'un programme pour un tri de masse. Je m'explique:



Je suis un grand joueur de Skyrim et j'ai téléchargé des centaines et des centaines de mods en 3 ans, j'en ai maintenant plus de 2500. Je les ait tous mis dans un dossier et les extraits pour avoir une organisation soignée seulement j'ai eu un problème. Le problème avec l'archivage c'est qu'il y a deux méthodes utilisées pour archiver: Clique-droit sur le fichier à archive et cliquer sur l’option pour archiver OU entrer dans le dossier, sélectionner tous les fichiers, clique droit à cliquer sur l'option pour archiver. La conséquence est la présence d'un dossier inutile dans une grande partie des dossiers, par exemple: \Téléchargement\Dossier47\Dossier47\. Le but est en suite de re-archiver tout ça avec une archive / dossier.



Voilà, mon but est de supprimer ce dossier inutile. Pour ça, j'ai programmé ceci:



:begin
for /f "delims=" %%a in ('dir "E:\Skyrim\Mods" /on /ad /b') do @set invest=%%a
cd %invest%
:second
for %%a in (.) do set currentfolder=%%~na
dir /b /a %currentfolder% | >nul findstr "^" && (
cd %currentfolder%
goto:second)||(cd..
MOVE %currentfolder% E:\Skyrim\Mods\temp\
7za a -t7z %currentfolder%.7z temp\)
goto:begin
end



Le problème vient de la seconde ligne que j'ai chopé sur le site comme je savais pas comment faire. Le but de cette ligne est de relever le nom d'un dossier au hasard et de l'entrer dans une variable.



Or, la ligne renvois une erreur ce qui a pour conséquence que la ligne en-dessous "cd %invest%" renvois au dossier où il est déjà, faisant échouer le reste du programme.



Je voudrais donc savoir comment corriger ce petit problème et, si possible, savoir s'il y a d'autres erreurs.



Merci d'avance pour l'aide, fantoski.
A voir également:

1 réponse

barnabe0057 Messages postés 14440 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 19 avril 2024 4 908
21 avril 2017 à 19:48
Bonjour,

Je trouve ton script beaucoup trop compliqué par rapport à la tâche à effectuer, moi je ferais quelque chose du style :

@echo off
Setlocal enableextensions enabledelayedexpansion

set source=E:\Skyrim\Mods
if not exist "%source%" goto :eof

cd %source%

for /f "tokens=*" %%A in ('dir "*.*" /ad /b') do (
set folder=%%A
if exist "%source%\!folder!\!folder!" (call :archiver)
)

explorer /select,"%source%"
Endlocal
exit

:archiver
cd %source%\!folder!
7za a -y -t7z !folder!.7z !folder!\
rmdir /S /Q "!folder!"
goto :eof
rem
0