Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dossiers automatiquement en fonction des fichiers

Créer des dossiers nommés en fonction des nom des fichiers présents

Sujet résolu
22 mai 2014 à 11:31:19

Salut à tous,

Je ne sais pas comment faire mais je pense que cela peut se faire avec un .bat , merci de me dire comment s'il vous plait :

Je souhaiterai qu'un script me range tous mes fichiers en fonction de leurs nom dans leur dossiers respectifs .

Par exemple :

Dans mon dossier j'ai actuellement E213_E215.jpg , E213_E214.jpg , M530_T465.jpg , M530_J120.jpg

Je souhaiterai qu'après exécution du script , il y ait 2 dossiers, E213 (avec à l'intérieur E213_E215.jpg et E213_E214.jpg)  et M530 (avec à l'intérieur M530_T465.jpg et M530_J120.jpg)

Merci d'avance !

  • Partager sur Facebook
  • Partager sur Twitter
22 mai 2014 à 11:51:19

Bonjour

MD "E213"
move "E213_*" "E213\"
MD "M530"
move "M530_*" "M530\"

MD permet de créer un dossier (Make Directory) et move déplace ton fichier.

  • Partager sur Facebook
  • Partager sur Twitter
22 mai 2014 à 11:59:11

merci bien pour ta réponse Shlygly, mais ca ne répond que partiellement à ma question :

- Qu'est-ce que je fais de ce code ? Je le met dans un fichier .bat dans le même dossier que j’exécute après ?

- Aussi ce code semble faire ce que je veux pour les dossiers E213 et M530, mais je voudrais que le code exécute ça pour 400 fichiers qui ont des noms différent et pas seulement pour les 4 fichiers de mon exemple. Il faudrait donc que le code détecte ce qui se trouve avant " _ " et le mette en nom de dossier pour tous.

Merci d'avance !

  • Partager sur Facebook
  • Partager sur Twitter
22 mai 2014 à 13:32:56

Alors pour répondre à ta première question c'est effectivement du batch (donc dans un fichier .bat).

Ensuite, pour ton second problème, je crains que ce que tu souhaite faire soit difficile à mettre en place par le biais du batch (voir sans doute impossible, je ne m'y connais pas assez en batch pour l'affirmer).

Après tu peux avoir 400 fichiers mais seulement une 10aine d'entête différents, dans ce cas là il suffirait juste d'ajouter autant de commandes MD et move que d'entêtes. Cela resterait toujours plus rapide que de faire un véritable programme juste pour ça.

Il y a aussi une solution alternative, l'utilisation de PowerShell qui (si mes sources sont exactes) permet d’exécuter des scripts shell sous Windows. Il me semble l'avoir utilisé il y a très longtemps pour des manipulations de fichiers en masse cependant je ne saurais te donner un code pour faire ce que tu veux.

En espérant t'avoir aidé :)

Bonne chance

  • Partager sur Facebook
  • Partager sur Twitter
22 mai 2014 à 15:57:31

C'est possible de le faire en batch.

Voici un début de code qui va t'intéresser:

for %%i in (*.jpg) do (
for /F "tokens=1 delims=_ " %%j in ('echo %%i') do (
set endfile=%%j
echo !endfile!
pause

)
)



  • Partager sur Facebook
  • Partager sur Twitter
22 mai 2014 à 15:59:58

Merci Zaibai pour ton début de réponse ;) ! Je ne connais rien au batch si quelqu'un saurait compléter ??

Merci d'avance !

-
Edité par maxwhat 22 mai 2014 à 16:02:02

  • Partager sur Facebook
  • Partager sur Twitter
23 mai 2014 à 9:05:54

La prochaine fois essaye d'effectuer au moins un bout de code toi même ;)

Prérequis:

- A mettre dans un fichier "nom_de_fichier.bat"

- A exécuter à la racine de tes fichiers "*.jpg"

- Fonctionne que pour les fichiers "*.jpg"

Fais un petit test avant le test grandeur nature. On est jamais assez prudent !
Moi j'ai fais un test en me basant sur ton premier post.

Ah ! Et j'oubliais, le code :-°

@echo off
setlocal ENABLEDELAYEDEXPANSION

for %%i in (*.jpg) do (
	for /F "tokens=1 delims=_ " %%j in ('echo %%i') do (
		set endfile=%%j
		MD !endfile! >Nul: 2>&1
		move /Y "!endfile!_*.jpg" "!endfile!"
	)
)
exit



-
Edité par Zaibai 23 mai 2014 à 9:09:32

  • Partager sur Facebook
  • Partager sur Twitter
23 mai 2014 à 9:55:54

Merci infiniment !!! ça fonctionne parfaitement !

Désolé pour le dérangement, j'aurai plus cherché si j'avais eu plus de temps libre mais ce n'est pas le cas en ce moment...

  • Partager sur Facebook
  • Partager sur Twitter
23 octobre 2022 à 12:35:06

Bonjour ce code fonctionne très bien mais j'aimerai faire la même chose par année c'est possible sur cette base de code ?? merci de votre aide
  • Partager sur Facebook
  • Partager sur Twitter
23 octobre 2022 à 13:37:29

@mathieuvernet2 Bonjour, merci de ne pas déterrer d'ancien sujet résolu pour une nouvelle question, créer le votre en nous fournissant le code que vous avez écrit.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter