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 :

Enigme bathienne (enlever extension d'un fichier)


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Par défaut Enigme bathienne (enlever extension d'un fichier)
    Bonjour, je me permets d'énoncer à nouveau mon souci avec un script qui semble tout bête, mais qui visiblement vu que personne n'a encore trouvé la solution ne l'est pas du tout

    1° Je veux pouvoir rajouter une extension (jpeg par exemple) à des fichiers qui n'en ont pas dans un dossier...ça c'est facile
    ex: fichier1 -> fichier1.jpeg, etc...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
    for %%A in (E:\DOSSIER\*) do (
    	ren "%%A" "%%~nA.jpg"	
    )
    2° Puis, le contraire, enlever l'extension des fichiers d'un dossier pour le rendre inexécutable.
    ex:fichier1.jpeg -> fichier1

    Çà parait très facile, mais en réalité, c'est beaucoup plus difficile, faire l'inverse parait logique mais, j'ai essayé et ça ne fonctionne pas.

    Y'a toujours une solution, mais pourriez-vous m'aider à trouver un script qui fonctionne et qui permettrais donc d'enlever l'extension d'un fichier???

    (Ce qui m'intéresse évidemment c'est le script BATCH, pas de cacher le fichier pour le rendre inaccessible)

    Cordialement...

    Phil alias youngblood

    BRAVO à celui qui trouvera, car ça fait des jours que je me casse la tête dessus, même si c'est vrai que je suis débutant.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2011
    Messages
    223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2011
    Messages : 223
    Par défaut
    salut,

    pourquoi pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @echo off
    
    set REP=c:\test
    
    for /f "tokens=1,2 delims=." %%i in ('dir /B "%REP%"') do (
    	move "%REP%\%%i.%%j" "%REP%\%%i"
    )
    
    PAUSE
    ...

  3. #3
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Bon voilà la preuve que ça marche dans tous les sens sans aucun problème:

    test.bat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo off
    
    for /f "delims=" %%A in ('dir *.txt /b') do (ren "%%A" "%%~nA")
    C:\test>dir *.txt /b
    ascii.txt
    asciii.txt
    car.txt
    cmd.txt
    tempo.txt
    test.txt
    testpixel.txt
    toto.txt
    On lance test.bat

    Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    C:\test>dir *.* /b
    
    ascii
    asciii
    car
    cmd
    tempo
    test
    test.bat
    testpixel
    toto
    Toute les extensions on bien disparue

    Il n'y a vraiment "d'énigmes batchiennes" !

    Maintenant si chez toi cela ne fonctionne pas, interèsse toi aux attributs de tes fichiers où/et au droit que tu as sur la machine.


  4. #4
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Salut,

    Pas besoin d'une boucle forindo, une simple ligne de commande suffit:
    et en plus c'est plus rapide qu'une boucle

  5. #5
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Si tu cherches du jpg et que tu as du jpeg ça ne marchera pas !

    Sinon, en ce qui me concerne, je préfère la fiabilité d'un filtrage en amont dans le genre de ce que propose sachaade qu'un renommage de masse avec ren, déjà qu'on observe des comportements différents avec les métacaractères suivants les différentes versions de cmd, je vous laisse imaginer ce que ça donne avec les syntaxes exotiques, ça peut foutre un bordel sacrément monstre à démêler.

  6. #6
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut,


    Citation Envoyé par minnesota Voir le message
    Sinon, en ce qui me concerne, je préfère la fiabilité d'un filtrage en amont dans le genre de ce que propose sachaade qu'un renommage de masse avec ren,
    .
    déja il faut que le filtrage soit en amont , dans notre cas il ne l'est pas car la boucle FOR utilise elle aussi un filtrage en masse...alors

    Citation Envoyé par minnesota Voir le message
    déjà qu'on observe des comportements différents avec les métacaractères suivants les différentes versions de cmd, je vous laisse imaginer ce que ça donne avec les syntaxes exotiques, ça peut foutre un bordel sacrément monstre à démêler.

    je respecte ta preference, mais si elle se base sur la fiablilité:

    ce n'est pas aussi fiable que cela peux paraitre, car le filtrage suit le même machanisme que le filtrage de "RENAME", à savoir lister les noms de fichier court NFC + les noms long NFL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    @echo off
    
    set "verbose=::" # echo
    
    %verbose% -- creation de fichier1_...fichier5_
    for /l %%a in (1 1 5) do cd.>fichier%%a_
    
    %verbose% -- lister les fichiers contenant '1' 
    for /f %%a in ('dir /b *1') do echo command %%a
    
    %verbose% -- lister les NFC et NFL
    for %%a in (*1) do echo %%~sa
    
    %verbose% -- copier les fichiers contenant '1'
    xcopy /lf *1 %temp%
    
    %verbose% -- effacer les fichiers fichier1_...fichier5_ 
    for /l %%a in (1 1 5) do del fichier%%a_
    
    pause

    et si ta préférence se base sur le fait qu'il y a des changement suivant les différentes versions de cmd, alors:

    a- tout d'abord, il faut montrer que le signe asterisques dans cette exemple peux changer selon les versions, es-ce que ton OS interprete la syntaxe ren autremement que mon system XPSP2 ?

    b- et même si on suppose que l'interprétation du signe astérisque n'est pas la même selon les versions, alors ceci n'est pas spécifique à l'astérisuqe, que feront nous des différentes syntaxes/commandes qui peuvent changer selon les versions de cmd.exe

    1- ajouter de nouvelles commandes selon les versions, comme 'forfiles'
    2- ajouter de nouvelles/anciennes commandes selon les versions, comme 'choice'
    3- supprimer quelques commandes selon les versions, comme 'debug'
    4- ajouter quelques commutateurs selon les versions, comme le commutateur 'R' de la commande dir
    5- supprimer quelques commutateurs selon les versions.
    6- ajouter quelques syntaxes selon les versions, comme permettre les wildcards hors system de fichiers.

    est-ce que celà veux dire que qu'on doit ne pas utiliser 'Forfiles', ou ne pas utiliser "choice" ou ne pas utiuliser "debug" ou ne pas utiliser les commutateurs ajouter ? ou ne pas utiliser les nouvelles syntaxes ?

    Citation Envoyé par minnesota Voir le message
    les métacaractères suivants les différentes versions de cmd, je vous laisse imaginer ce que ça donne avec les syntaxes exotiques
    l'exotisme n'est pas toujours synonyme de bordel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    REM navigation dans le system de fichiers 
    C:\> pushd c:\win*\*32\dr*rs\e*c
    
    REM navigation dans le registre
    C:\> reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v My*
    
    REM kill de process
    C:\> tskill note* /v
    
    REM affichage de process
    c:\> tasklist /fi "imagename eq note*"
    
    REM test avec du renommage en masse
    c:\ > dir /b /a-d
    file 1.txt
    file 2.txt
    file 3.txt
    
    c:\> ren *.txt *.
    file 1
    file 2
    file 3
    
    c:\> ren *. .txt
    file 1.txt
    file 2.txt
    file 3.txt

  7. #7
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    ma réponse était spécifique à la commande interne ren et l'astérisque n'est qu'un des métacaractères acceptés par ren... faut pas tout mélanger et généraliser non plus...

  8. #8
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut minnesota,

    je ne généralise pas et je ne mélange pas, tout ce que je voulais dire que le filtrage dans la plus part des commandes accepatant le filtrage en masse suivent toujours la même règle à savoir traiter les fichiers NFC et NFL en même temps, donc que se soit un renommage en masse ou un filtrage avec forindo puis renommage en amont tout deux sont identiques dans leur mechanisme de filtrage et différent dans leurs performance, ici le renommage en masse prend le dessus.

    bonne continuation et merci pour ton effort dans la coimmunauté.

Discussions similaires

  1. Connaitre l'extension d'un fichier...
    Par nizarsm dans le forum ASP
    Réponses: 10
    Dernier message: 24/04/2006, 09h53
  2. Changer l'extension de plusieurs fichiers
    Par Barbu15-95 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/04/2006, 19h36
  3. [SERVLET]Détecter l'extension d'un fichier ??
    Par Devil666 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 02/06/2005, 17h27
  4. tester l'extension d'un fichier avant d'uploader
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/02/2005, 15h12

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