IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Copier des noms de fichiers en changeant les extensions


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Copier des noms de fichiers en changeant les extensions
    Bonjour à tous,

    j'ai une requête simple :
    j'ai un dossier contenant 250 images (.png) et j'aimerais utiliser un script qui crée dans un autre dossier un fichier texte vierge qui a le même nom que l'image (.txt).
    Comme ça risque de ne pas être la seule fois que je fais cette manoeuvre, j'aimerais bien avoir un petit script pour m'aider

    Les fichiers texte seront modifiés plus tard pour faire de la persistance d'informations (XML ou autre, ça reste encore à décider).

    Je la refais en version algorithme au cas où ma demande n'est pas claire :
    Pour chaque fichier texte de ./images, créer un fichier texte dans ./donnees qui possède le même nom (et pas la même extention, naturellement).

    Est-ce que c'est possible sous Windows ? J'ai déjà eu des soucis avec le changement d'extensions par le passé (j'ai coché l'option pour qu'elles soient visibles sur ce PC).


    Merci de votre temps,

  2. #2
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Bonjour,

    Je te propose ceci :
    Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @echo off&cls
    FOR /f "usebackq delims=" %%f IN (`dir /b %~dp0images\*.png`) DO (
    	if not exist "%~dp0donnees\%%~nf.txt" (
    		echo.>"%~dp0donnees\%%~nf.txt"
    	)
    )
    Le script est placé dans le dossier parent de images et donnees
    Il liste les images, regarde si un fichier image.txt existe, s'il n'existe pas il le créé.
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci pour cette réponse rapide !

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Autre solution qui ne s’appuie par sur une analyse de chaine et qui crée un vrai fichier vide

    Sous dossier 'bbb' contenant les png, on veux créer dans le sous-dossier 'ccc' un fichier txt du même nom vide si il n'existe pas déjà.

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    forfiles /P "bbb" /M "*.png" /C "cmd /c type nul >> "%cd%\ccc\@fname.txt""

  5. #5
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Alors déjà "analyse de chaines".....

    Ensuite %cd% c'est le chemin courant de la console et non le chemin du script.....
    Il faut utiliser %~dp0 !

    Il est vrai que ForFiles est pas mal pour ça, sauf qu'ici tu ne test pas l’existence sur fichier texte !
    Donc si par la suite @Morflight viens travailler avec, écrire des chose dedans et bien à chaque run de ton code tout est perdu.......
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Oui c'est le chemin courant tout comme dans la commande forfile le dossier 'bbb' et 'ccc' est relatif au chemin courant.
    C'est une ligne de commande fonctionnelle, libre à Morflight de la modifier/intégrer dans son script si il le souhaite.

    Je n'est pas besoin de tester l'existence d'un fichier puisque j’ajoute du (vrai) vide ">>"

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci pour vos avis, en tout cas la copie fonctionne avec le premier script.

    Je ne suis pas un expert en shell windows, donc je me contenterais de ça.
    J'ai marqué le sujet en résolu, bonne continuation à tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/08/2015, 18h52
  2. Problème pour supprimer les caractères spéciaux des noms de fichiers
    Par Steph84563 dans le forum Shell et commandes POSIX
    Réponses: 0
    Dernier message: 15/04/2014, 10h28
  3. [RegEx] Supprimer les caractères spéciaux des noms de fichiers
    Par Steph84563 dans le forum Langage
    Réponses: 4
    Dernier message: 11/04/2014, 14h51
  4. Récupérer des noms de fichier dans une table pour les placer en masque du tfilelist
    Par charliplanete dans le forum Développement de jobs
    Réponses: 11
    Dernier message: 24/08/2011, 17h16
  5. Supprimer les espaces des noms de fichier
    Par Cathy dans le forum Linux
    Réponses: 20
    Dernier message: 04/08/2005, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo