Comment créer des dossiers automatiquement en fonction des fichiers présents ?

bonjour,
voici une question qui a mon avis ne sera pas facile. Donc les experts à vos claviers :stuck_out_tongue:

J’aimerais créer et renomer automatiquement des dossiers en fonction des fichiers présents.

Exemple: J’ai dans un dossier avec 3 fichiers (de toute nature) nomé “numéro1” “essai” et “dur dur”. Je cherche une méthode ( logiciel ou ligne de programation) qui permettra de créer automatiquement 3 dossiers qui vont porter le même nom que les fichiers. Résultat apres une manipulation, je voudrais avoir automatiquement un dossier nomé “numéro1”, un autre “essai” et un autre “dur dur”.
La cerise sur le gâteau c’est que les 3 fichiers de base qui ont permis de créer ses 3 dossiers soit copier coller dans leur dossier respectif.

Alors ? dur dur comme question non ? Je ne sais pas si j’ai été claire…
Je cherche à faire ça depuis hier soir, et j’ai rien trouvé. Peut etre que là on est obligé de faire un petit programme perso.

Merci d’avance pour vos réponse

D’une c’est pas possible en une passe car deux fichiers (un répertoire est un fichier) ne peuvent être nommés pareil. tu peux commencer par un :

for file in `ls *`; do mkdir $file.dir; mv $file $file.dir; done;

merci pour ta réponse mais il y a une chose qui m’échappe.

:confused: ben si on peut tres bien avoir un dossier nomé “essai” et un fichier " nomé “essai” aussi… Tout comme on peut avoir 2 fichiers només pareil mais pas de même nature.

??? De quoi parle tu ?

Tu n’as pas dit quel langage tu voulais utiliser ?

Si tu veux le faire en batch ça doit donner quelque chose du genre

@echo off
for %%i in (*.*) do (
if not %%i==RN.bat (
rename %%i %%i.tmp
md %%i
copy %%i.tmp %%i\%%i
del %%i.tmp
)
)

Ici, le fichier batch s’appelle RN.bat, et il doit se trouver dans le même répertoire que les fichiers à manipuler.
Par contre, tes fichiers ont probablement une extension.
Et donc tes sous dossiers vont eux aussi se retrouver avec un nom qui aura une extension.
Ce n’est peut être pas exactement ce que tu veux
Edité le 10/06/2009 à 15:47

essai.jpeg et essai.mp3 ne sont pas de même nature et peuvent porter le même nom dans le même dossier.

Et ce que je veux c’est qu’un fichier (ex: essai.mp3) nous permette de dire qu’il faut cré un dossier nomé “essai” ( puisque le nom du fichier est essai) puis ensuite déplacer le fichier essai.mp3 dans ce nouveau dossier “essai” :/:confused:

Tu peux expliquer ce que tu veux dire, là ?

Si tu veux supprimer l’extension pour créer le nom de répertoire, il n’y a pas de solution simple en batch (à moins que tous les fichiers ne possèdent une extension de 3 caractères, auquel cas il faut voir en passant par les variables d’environnement)

Sinon, tu as la solution du vbs. Tu l’as envisagée dans tes essais d’hier ?
Edité le 11/06/2009 à 06:58

Batch on appelle ça ligne de commande aussi ? non ? Car j’y avais pensé mais de ce que je connais, ce son des choses “simple” et je pensais pas que c’était possible de faire ça avec du batch. J’ai donc essayé ( j’ai cré un fichier .bat que j’ai édité avec un éditeur de texte.) j’ai essayé et POUUUUUUAAA !! c’est presque ça !!! je dirais même que c’est ça. L’extension des dossiers c’est pas grave je peux apres utiliser un renomage de dossier en masse.

Faut que j’essai de comprendre ta ligne là pour plus tard au cas où. J’adoooore ça marche :smiley:

Si tu as une astuce pour que le dossier ne prenne pas le nom de l’extension ça serai TOP. Sinon ce n’est vraiment pas grave.


en faite petit souci peut être.... j'essai de le régler.

Le batch, ce n’est pas tout à fait de la ligne de commande, puisque c’est justement le fait d’exécuter plusieurs lignes séquentiellement à partir d’un fichier, mais ça fait appel aux mêmes commandes.

Si tu connais un truc pour la suppression en masse des extensions, on doit pouvoir l’intégrer dans ce fichier.
Tu ferais comment ?

en faite ça ne marche pas. Il cré un dossier par espacement. Exemple : “Un coeur invaincu.avi " ça cré un dossier “UN” puis apres COEUR” et etc… y’a un message d’erreur aussi.

Arfff je crois que je vais laissé tombé. C’est essentielement des vidéo. L’idée c’est que chaque vidéo se trouve dans son propre dossier portant son nom.

c’est bon. En faite il ne faut pas qu’il y est d’espace ou de point dans le titre. Donc avec un logiciel de renomage comme “ant renamer” ça va tout seul. Tiens je me demande si on peut insérer ton batch sur ce logiciel…

je vais voir…

Ok… Non, tes fichiers ont des noms différents. L’extension fait partie du nom du fichier. Après il s’agit de types de fichiers différents. toto.mp3 a pour nom toto.mp3, pas toto et est de type mp3. Renommé en toto.txt, il a pour nom toto.txt mais est toujours de type mp3.

Donc tu veux pouvoir pour chaque fichier, créer un répertoire du nom de base de ton fichier et y copier ledit fichier. Ma proposition va pas vu que c’est du bash. Je laisse les powerShellistes te répondre :wink:

Attention tout du moins : si tu a toto.mp3 et toto.txt, à ne pas tenter de créer un répertoire qui existe déjà :wink:

Gcc tu ne peux pas déplacer le fichier plutôt que copier coller ?

Si, bien sûr
Mon windows en ligne de commande est un peu rouillé …
Pour ce qui est des espaces dans les noms de fichier, c’est comme ne ligne de commande, il suffit que tu rajoutes des guillemets autour et c’est bon.

oui ça doit être “move”, je vais essayé.
Par contre pour les guillements je vois pas ou il faut les mettre…


ouuaa !! ça va carrement plus vite avec "move" :p

bon il n’y a plus que ton histoire de " " et ça doit etre bon :smiley:


voilà ce que ça donne.

@echo off
for %%i in (.) do (
if not %%i==RN.bat (
rename %%i %%i.tmp
md %%i
move %%i.tmp %%i%%i
)
)

j’ai supprimé la ligne del %%i.tmp
Par contre un truc m’échappe… comment ça se fait qu’une fois déplacer mon fichier à son nom d"origine et non le nom avec . tmp à la fin ?

Tu devrais avoir tout avec ça


@echo off
setlocal enabledelayedexpansion
for %%i in (*.*) do (
if not %%i==RN.bat (
set rep=%%i
set rep1=!rep:~0,-4!
rename "%%i" "%%i.tmp"
md "!rep1!"
move "%%i.tmp" "!rep1!\%%i"
)
)

1 « J'aime »

je viens d’essayer ça marche nikel !!! Un grand merci j’aurai pas trouvé tous seul. (Quoi si mais dans un mois ou deux…:peur::peur:.)

Dites les gars, quit à écrire un script, pourquoi vous le mettez pas dans le path, ce qui éviterai de l’avoir la ligne de vérification RN.bat, et autant paramétrer le répertoire à traiter pour l’appeler de n’importe où, non ?

Et le
for %%i in (.)
tu le traites comment, de n’importe où ?

Franchement ? J’en sais rien. Le PowerShell ne m’intéresse pas du tout. Tu me poserai la question en Bash, Python, Perl… c’est la base de la lecture d’un fichier donc ils n’ont aucun problème. Si le powershell est fait correctement, le répertoire de travail est le répertoire où est lancé la commande, pas là où elle est hébergée, donc il ne devrait pas y avoir de problème. Si tu veux le lancer sur un autre répertoire, de toutes manières tu devra passer le répertoire en paramètre, tu peux donc le récupérer.