Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Batch nom de fichier
Auteur Message
Répondre en citant
Message Batch nom de fichier 
Bonjour

Je souhaiterai savoir, via un .bat, comment supprimer une partie d'un nom de fichier à savoir les 6 derniers caractères avant l'extension, exemple :

nom_de_fichier_123456.xls résultat attendu : nom_de_fichier_.xls

Merci pour votre retour

Cordialement



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Batch nom de fichier 
Code:

set fichier=nomdefichier_123456.xls

:: extension = un point et TROIS lettres! (si c'est 2 lettres, on met -3 au lieu de -4)
set ext=%fichier:~-4%

:: on vire l'extension et les 6 premiers (ce qui fait 6 + 4 = 10, si l'extension ne fait que 2 caractères, on met -9 a la place de -10)   
set nom=%fichier:~0,-10%

:: puis on rajoute l'extension qu'on a récupéré (concaténation)
set nom_final=%nom%%ext%

echo %nom_final%
pause


Ce qui donne, dans la console,
Console a écrit:


C:\temp>set fichier=nomdefichier_123456.xls

C:\temp>set ext=.xls

C:\temp>set nom=nomdefichier_

C:\temp>set nom_final=nomdefichier_.xls

C:\temp>echo nomdefichier_.xls
nomdefichier_.xls

C:\temp>pause
Appuyez sur une touche pour continuer...


(HS = j'ai volontairement viré l'accent au a de "à la place" car ça passe pas dans la coloration syntaxique)
Code:
:: ça donne ça -> à





______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message Batch nom de fichier 
Bonjour & merci Hugo

Le code fonctionne très bien pour un fichier mais je souhaiterai appliquer cette règle pour plusieurs fichiers dans un dossier, peux tu m'aider ?

Merci encore

Cordialement



Répondre en citant
Message Batch nom de fichier 
Tous les fichiers du dossier?
Le problème c'est que tous les fichiers doivent avoir 3 caractères à l'extension (.bat .xls .vbs etc) et pas de .html (4) de .cs (2) ou autres Smile




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message Batch nom de fichier 
Oui ils sont dans le même dossier et ce sont tous des .xlsx (4)

Cordialement



Répondre en citant
Message Batch nom de fichier 
D'accord
Code:

setlocal enabledelayedexpansion enablextensions

:: Ici le chemin complet du dossier
cd C:\Users\dossier\etc

for /f %%A in ('dir /b "%cd%"') do (
set fichier=%%A
 
:: extension = un point et QUATRE lettres!
set ext=!fichier:~-5!
 
:: on vire l'extension et les 6 premiers (ce qui fait 6 + 5 = 11)
set nom=!fichier:~0,-11!
 
:: puis on rajoute l'extension qu'on a récupéré (concaténation)
set nom_final=!nom!!ext!
 
echo !nom_final!

)
pause


PAr contre j'ai pas testé...




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message Batch nom de fichier 
Merci mais cela ne fonctionne pas :-)



Répondre en citant
Message Batch nom de fichier 
T'as adapté le chemin du dossier?
Pour moi ça marche





______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message Batch nom de fichier 
Salut Hugo



Effectivement le code fonctionne mais les fichier ne ce renomme pas !!!



Répondre en citant
Message Batch nom de fichier 
oui il faut faire
Code:
ren "%%A" "!nom_final!"

à la place du echo!
Code:
 setlocal enabledelayedexpansion enablextensions
 
:: Ici le chemin complet du dossier
cd C:\Users\dossier\etc
 
for /f %%A in ('dir /b "%cd%"') do (
set fichier=%%A
 
:: extension = un point et QUATRE lettres!
set ext=!fichier:~-5!
 
:: on vire l'extension et les 6 premiers (ce qui fait 6 + 5 = 11)
set nom=!fichier:~0,-11!
 
:: puis on rajoute l'extension qu'on a récupéré (concaténation)
set nom_final=!nom!!ext!

ren "%%A" "!nom_final!"
 
)
pause





______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message Batch nom de fichier 
Bonjour Hugo

Encore une petite erreur :





Répondre en citant
Message Batch nom de fichier 
En stéréo avec devellopez.com

http://www.developpez.net/forums/d1568397/general-developpement/programmati…

Code:
@Echo off

setlocal enabledelayedexpansion


for %%a in (*.xlsx) do (
  set "$Fichier=%%~na"
  call:Traite "%%a"
)

echo OK
exit/b

:Traite
set "$Fichier=!$Fichier:%$Fichier:~-6%=!%date:/=%"
echo ren "%~1" "!$Fichier!%~x1"


J'ai mis un ECHO devant le REN pour que tu puisses tester la sortie.
Si c'est OK enlève le ECHO et Enjoy !



Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message Batch nom de fichier 
Bonjour à tous !
Merci pour votre aide mais cela ne fonctionne toujours pas. Je ne sais pas exactement d’où vient le problème. Je suis preneur pour toutes suggestions.




______________________________________________________
L’« ère informatique » était arrivée : elle allait bouleverser nos vies, transformer les quotidiens.

Site: http://python.developpez.com/cours/
Répondre en citant
Message Batch nom de fichier 
Si tu veux supprimer les 6 derniers caractères pour tous les fichier .xls d'un dossier :
Code:

@echo off

set Dossier=DOSSIER
setlocal enabledelayedexpansion

for /f "tokens=*" %%a in ('dir /b /a:-D %Dossier%\*.xls') do (
if /I "%%a" NEQ "%~n0" call :FileRen "%%a")

Pause>NUL

:length
for /f "tokens=1* delims=[]" %%a in ('
  "%comspec% /u /c echo:%~1|more|find /n /v """
 ') do set /a "length=%%a-4"
goto:eof

:FileRen
set Ext=%~x1
set Name=%~n1
call :length "%Name%"
if %length% LEQ 6 (
echo;%~1 was not renamed ^(Too short name ^^!^)
goto :EOF)
ren "%Dossier%\%~1" "%Name:~0,-6%%Ext%"
echo;%~1 renamed %Name:~0,-6%%Ext%
goto :EOF


Pour que ça fonctionne, il faut mettre tous les fichiers que tu veux renommer dans un dossier, l'indiquez via la variable Dossier et ouvrir le programme !

Voilà @ ++ Okay Wink




______________________________________________________
Coucou, tu veux voir mon Site Web ?? Mort de Rire
Visiter le site web du posteur Skype
Message Batch nom de fichier 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



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