Signaler

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

Posez votre question fantoski - Dernière réponse le 21 avril 2017 à 19:48 par barnabe0057
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.
Afficher la suite 
Utile
+0
plus moins
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
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !