Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
[R] Aide rangement automatique de fichiers
Auteur Message
Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Bonjour,

Alors voilà j'ai un problème avec mon code, je n'arrive pas à faire ce que je veux faire même en regardant partout sur internet.

Voici mon code :

Code:
@echo off
set i=0
set nbsaisons=10
For %%X in (D:\Téléchargements) do (
   for i < nbsaisons do (
   If exist "Spartacus S0%i%*" move "Spartacus S0%i%*" "D:\Vidéos\Séries\Spartacus\Saison %i%"
   set i=%i%+1
   )
)
pause


En gros, je veux faire un rangement auto. Donc quand il cherche dans le dossier "Téléchargements" et qui trouve quelque chose qui commence par "Spartacus S0%i%", %i% serait le numéro de la saison (1, 2, 3), et après le déplace dans le bon dossier de la bonne saison.

Je sais pas si c'est clair ce que je viens de dire ^^
Je vous remercie d'avance.



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Yop,

Essais ceci, quelqu'un corrigera si ça ne fonctionne pas je ne peux pas tester sur mon téléphone Wink

Code:
@ECHO OFF
SET NBSAISONS=10
SET CHEMIN=D:\TÉLÉCHARGEMENTS
FOR /L %%N IN (1,1,%NBSAISONS%) DO FOR /F %%# IN ('DIR /B /S %CHEMIN% ^| FIND "SPARTACUS S0%%N"') DO MOVE "SPARTACUS S0%%N*" "D:\VIDÉOS\SÉRIES\SPARTACUS\SAISON %%N"





______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Alors, quand je lance bat rien ne se passe. Et j'ai essayé la ligne en cmd "DIR /B /S D:\Téléchargements ^| FIND "Spartacus S01*" et voilà ce qu'elle renvoie :

Code:
d:\téléchargements\Autosort 1.1.bat
d:\téléchargements\Autosort 1.2.bat
d:\téléchargements\Spartacus S01.jpg
Fichier introuvable




Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Je ne peux pas regarder pour le moment, si personne n'intervient je regarde ça en rentrant plus tard dans la soirée.




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Pas de soucis, merci !



Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Bonjour,

%%# contient le chemin du fichier que l'on veut déplacer, comme la recherche est récursive utiliser %%N ne marchera que si le fichier (ou dossier) à déplacer est dans le dossier local or ce n'est pas toujours le cas (car il y a /S dans dir) donc il faut le chemin par rapport à %CD% plutôt que le nom.
Également, sans paramètres, for /f prendra le 1ere élément délimité par défaut par un espace donc, quand il y a un espace dans le nom de fichier, ça va poser problème car le chemin va être coupé par l'espace donc il faut utiliser tout les tokens de for.

Je conseille également de mettre le paramètre /i à FIND pour ignorer la case.

Code:
@ECHO OFF
SET NBSAISONS=10
SET CHEMIN=D:\TÉLÉCHARGEMENTS
FOR /L %%N IN (1,1,%NBSAISONS%) DO FOR /F "tokens=*" %%# IN ('DIR /B /S %CHEMIN% ^| FIND /i "SPARTACUS S0%%N"') DO MOVE "%%~#" "D:\VIDÉOS\SÉRIES\SPARTACUS\SAISON %%N"





______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Merci TS Okay



Dernière édition par Logan le Mer 27 Jan 2016 - 22:41; édité 1 fois

______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Merci pour la rapidité Very Happy

Donc ça marche parfaitement bien Shocked

Mais je comprends pas tout le code du coup ça m'embête ^^. Les tokens déjà, %%# et %%~# et pourquoi ici on a pas besoin de mettre une * après S0%%N pour ignorer la suite du nom ? Grâce à Find /i ?

De plus j'aimerais rajouter :
Code:
If exist "Spartacus S01*" md "D:\Vidéos\Séries\Spartacus\Saison 1" 2> nul


Mais dans ton code du coup, donc ça serrait un truc du genre :

Code:
If FIND /i "SPARTACUS S0%%N"') md "D:\Vidéos\Séries\Spartacus\Saison 1" 2> nul & DO MOVE "%%~#" "D:\VIDÉOS\SÉRIES\SPARTACUS\SAISON %%N"

Ou pas ?



Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Ton traitement conditionnel sera inutile dans cette fonction puisque cette dernière cherche directement
les fichiers par occurrences selon N définie par NBSAISONS.

Pour que tu comprennes cette fonction, autant te la traduire:

Citation:

FOR /L %%N IN (1,1,%NBSAISONS%) DO

Pour chaque itération de FOR de maximum NBSAISONS affecter la valeur correspondante à N


FOR /F "tokens=*" %%# IN ('DIR /B /S %CHEMIN% ^| FIND /I "SPARTACUS S0%%N"') DO

Pour chaque itération provoqué par le renvoi positif de la recherche de "SPARTACUS S0" suivi de la variable
contenant la valeur de la fonction mère (%%N) tout en ignorant la casse ( /I ) ainsi que la délimitation logique (ignore les espaces grâce a TOKENS=*)
d'attribution de variable au nom de fichier (= %%#)

MOVE "%%~#" "D:\VIDÉOS\SÉRIES\SPARTACUS\SAISON %%N"

Si nous obtenons le renvoi positif de FIND, déplacer le fichier en cours de traitement dans le chemin D:\VIDÉOS\SÉRIES\SPARTACUS\SAISON %%N


Pour ce qui est de ta demande, il est certes possible de bidouiller sans FOR, mais ce ne serais que
s'embêter pour rien, d'autant plus que ce que tu demande est exactement ce que traite FOR logiquement Okay




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Ah merci beaucoup c'est bien clair maintenant !

Du coup pour ma demande c'est qu'en fait je veux que si le dossier (imaginons Saison 3 de Spartacus) n'existe pas qu'il le crée et déplace l'ep dedans. J'ai essayé juste avec FOR mais ce qu'il fait c'est qu'il renomme le fichier à déplacer pour en faire un dossier, ce qui fait un fichier sans extension. Rolling Eyes

Sinon, pour ajouter une série, je dois refaire un For ou je peux l'ajouter après la pipe entre parenthèses ?



Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Bonsoir,

Voici,
il suffira de changer le CALL pour un autre fichier ou d'en copier un à la suite en changeant les arguments tout en laissant les variables contenant les chemins des dossiers, sauf si tu souhaite les changer (comme le deuxième CALL fait pour exemple).

Code:
@ECHO OFF
FOR /F "TOKENS=3,*" %%I IN ('REG QUERY "HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\SHELL FOLDERS" ^| FIND /I "MY VIDEO"') DO SET VIDEOS=%%J
FOR /F "TOKENS=2,*" %%I IN ('REG QUERY "HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\SHELL FOLDERS" ^| FIND /I "{374DE290-123F-4565-9164-39C4925E467B}"') DO SET TELECHARGEMENTS=%%J


CALL:FCT1 "%TELECHARGEMENTS%" "SPARTACUS S0" "%VIDEOS%\SERIES" "SPARTACUS" 10

REM EXEMPLE POUR UNE AUTRE SERIE
CALL:FCT1 "%TELECHARGEMENTS%" "Sherlock Holmes Saison-" "%VIDEOS%\SERIES" "Sherlock-Holmes" 18


GOTO:EOF

:FCT1
FOR /L %%N IN (1,1,%5) DO (
   FOR /F "TOKENS=*" %%F IN ('DIR /B "%~1" ^| FIND /I "%~2%%N"') DO (
      IF NOT EXIST "%~3\%~4\SAISON %%N" MD "%~3" "%~3\%~4" "%~3\%~4\SAISON %%N"
      MOVE "%~1\%%~F" "%~3\%~4\SAISON %%N"
   )
)





______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Yop,

Wow c'est plus poussé ça, je te remercie et j'espère que ça t'a pas embêté de le faire.

Du coup je comprends à peut prés tout, je vais te demander pour être sûr quand même entre '!!' :

Code:
@ECHO OFF
FOR /F "TOKENS=3,*" %%I IN ('REG QUERY "HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\SHELL FOLDERS" ^| FIND /I "MY VIDEO"') DO SET VIDEOS=%%J
FOR /F "TOKENS=2,*" %%I IN ('REG QUERY "HKCU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\SHELL FOLDERS" ^| FIND /I "{374DE290-123F-4565-9164-39C4925E467B}"') DO SET TELECHARGEMENTS=%%J
!! Alors là je suppose que c'est juste pour trouver mes dossiers depuis le registre pour en faire des raccourcies avec SET !!


CALL:FCT1 "%TELECHARGEMENTS%" "SPARTACUS S0" "%VIDEOS%\Séries" "Spartacus" 10  !! Ici, j'ai compris on utilise la fonction plus bas. Par contre le "10" je comprends pas !!
CALL:FCT1 "%TELECHARGEMENTS%" "SUPERGIRL S0" "%VIDEOS%\Séries" "Supergirl" 10   !! J'ai rajouté une série du coup pour voir et ça marche, j'ai mis aussi "10" du coup !!

GOTO:EOF

:FCT1
FOR /L %%N IN (1,1,%5) DO (                                                 !! Ici par contre le '%5' sert à quoi ? C'est censé être le max non ? Mais pourquoi le '%' et je peux passer à 9 du coup ? !!
   FOR /F "TOKENS=*" %%F IN ('DIR /B "%~1" ^| FIND /I "%~2%%N"') DO (
      IF NOT EXIST "%~3\%~4\Saison %%N" MD "%~3" "%~3\%~4" "%~3\%~4\Saison %%N" 2> nul    !! Là j'ai rajouté 2> nul pour ne pas avoir un retour d'erreurs !!
      MOVE "%~1\%%~F" "%~3\%~4\Saison %%N"
   )
)
!! Bon sinon j'ai compris ce que fait la fonction même si je ne comprends pas tous les '%~' ^^ !!
pause




Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Wremy a écrit:

Code:
 je ne comprends pas tous les '%~' ^^ !!

Tout est là (ou presque) http://batch.xoo.it/t4314-Tuto-Les-substitutions-de-r-f-rences-de-variables… Okay

Donc tout ce qui est là, si j'ai bien compris, ça vire les "" contenus dans les arguments (car la fonction est appelée avec des arguments qui sont contenus dans les variables %1 %2 %3 etc..., et on veut supprimer les guillemets dans ces variables)
Wremy a écrit:
%~3\%~4\Saison %%N" MD "%~3" "%~3\%~4" "%~3\%~4\Saison %%N"





______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Bonjour,

Les %n sont les arguments de l'appel de fonction, donc %2 renverra "SPARTACUS S0".

Le ~ sert effectivement à supprimer les guillemets pour ne pas interférer avec les commandes fonctionnelles, donc %~2 renverra: SPARTACUS S0.

Pour ce qui est du dernier argument (%5), c'est le nombre de saisons que tu peut modifier selon ta série. Donc ici tu stipule qu'il y a dix saisons ce qui permet de faire la recherche de SPARTACUS S01 à SPARTACUS S010.

Pour ce qui est des deux FOR au départ, c'est bien pour trouver le chemin des dossiers DOWNLOAD et VIDEO par le registre, de façon à pouvoir l'utiliser sur n'importe-quelle machine.


Non ça ne m'a pas gêné du-tout d'autant plus que ça ne m'a pas pris excessivement de temps et que je suis là pour ça Okay


Bonne continuation et si tu as besoin n'hésite pas




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message [R] Aide rangement automatique de fichiers 
Merci bien Hugo7, je vais lire ça.

Et merci aussi Logan, du coup pour
Code:
FOR /L %%N IN (1,1,%5)
C'est toujours obligé de mettre le % devant X ?

Et aussi là je crois pas que tu es répondu (pardon si j'ai pas vu) :
Code:
CALL:FCT1 "%TELECHARGEMENTS%" "SPARTACUS S0" "%VIDEOS%\Séries" "Spartacus" 10
Le '10' à la fin, je vois pas à quoi il sert.

Sinon pour le reste c'est bon, je suis entrain de faire une Fct2 pour les saison 10 et + car comme ça s'appelle "Spartacus S10" et pas "Spartacus S010" je suis obligé. Mais ça va j'ai juste à copier la tienne et changer 2,3 trucs Very Happy



Message [R] Aide rangement automatique de fichiers 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 2
Aller à la page: 1, 2  >
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch