Question

Donc, j'ai un tas de fichiers sans extension. Je veux écrire un script batch Windows qui:

  1. Rechercher des fichiers sans extension (dans un dossier spécifié)
  2. Ajoutez .bla à la fin du nom de fichier

Je suis un script de commandes batch Windows, je ne sais même pas par où commencer. Suggestions?

Était-ce utile?

La solution

Pour les fichiers de commandes Windows, seuls les fichiers sans extension portant l'extension .bla seront renommés:

rename *. *.bla

Notez que le premier argument est une étoile et un point: *.

Le deuxième argument est: * .bla

La combinaison de points de départ (*.) représente des fichiers sans extension dans ce contexte.

Avant:

06/21/2009  11:57 PM                 6 test
06/21/2009  11:57 PM                 7 test.exe
06/21/2009  11:57 PM                 7 test2

Après:

06/21/2009  11:57 PM                 6 test.bla
06/21/2009  11:57 PM                 7 test.exe
06/21/2009  11:57 PM                 7 test2.bla

Remarque supplémentaire: la ligne de commande ci-contre renomme tous les fichiers .bla en fichiers d’extension.

MODIFIER :

Pour renommer de manière récursive des fichiers sans extension entre sous-répertoires (ne prend pas en charge les espaces dans les chemins):

@echo off
FOR /F %%i in ('dir /b/s/A-d') DO (
  if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
)

EDIT2:

Pour renommer de manière récursive des fichiers sans extension entre sous-répertoires (prend en charge les espaces dans le chemin):

@echo off
for /f "tokens=* delims= " %%i in ('dir /b/s/A-d') DO (
  if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
)

Autres conseils

Voici une autre commande possible pour renommer des fichiers sans extension de manière récursive (en supposant que les chemins de fichiers ne contiennent pas d'espaces ):

for /f %i in ('dir *. /b /s /a-d') do rename "%~fi" "%~ni.bla"

Version par lots (avec % doublé):

@echo off
for /f %%i in ('dir *. /b /s /a-d') do (
   rename "%%~fi" "%%~ni.bla"
)


Si les noms de fichiers ou de dossiers contiennent des espaces , utilisez plutôt cette commande:

for /f "tokens=* delims= " %i in ('dir *. /b /s /a-d') do rename "%~fi" "%~ni.bla"

Version du lot:

@echo off
for /f "tokens=* delims= " %%i in ('dir *. /b /s /a-d') do (
   rename "%%~fi" "%%~ni.bla"
)

Modifier: voici une ligne encore plus courte qui prend en charge les espaces dans les chemins:

for /r %i in (*.) do ren "%~fi" "%~ni.bla"

Version du lot:

@for /r %%i in (*.) do ren "%%~fi" "%%~ni.bla"

pour faire cela dans les sous-répertoires, utilisez ceci:

 for /f %a in ('dir /b /ad /s') do rename %a\*. *.bla

si vous utilisez ceci dans un fichier de commandes, vous devez doubler le '%'

 for /f %%a in ('dir /b /ad /s') do rename %%a\*. *.bla

modifier:

et si vous avez des espaces dans les noms de répertoires, vous pouvez essayer ceci (version par lots):

 for /f "tokens=* delims= " %%a in ('dir /b /ad /s') do rename "%%a\*." "*.bla"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top