Ajout du dossier actuel comme préfixe au nom du fichier sans duplication


0

J'essaie de rassembler un fichier de commandes qui ajoutera le nom du dossier actuel comme préfixe à tous les fichiers de ce dossier. En outre, cela doit pouvoir s'exécuter plusieurs fois sans dupliquer le préfixe.

J'ai trouvé celui-ci qui est presque ce dont j'ai besoin! Le seul problème est qu'il duplique le préfixe à chaque exécution. Si quelqu'un pouvait me diriger dans la bonne direction, je serais très complet!

@echo off
pushd "Folder"
for /d %%D in (*) do (
  pushd "%%D"
  for /r %%F in (*) do (
    for %%P in ("%%F\..") do (
      ren "%%F" "%%~nxP_%%~nxF"
    )
  )
  popd
)
popd

Cette réponse a été envoyée par https://superuser.com/users/109090/dbenham à la question Ajouter le nom du dossier au début du nom du fichier.

Réponses:


0

L'extrait de code suivant montre une approche possible (de plusieurs manières); notez que la rencommande opérationnelle est simplement echoed ( echo ren ...) à des fins de débogage:

@ECHO OFF
SETLOCAL EnableExtensions
goto :skipProcedures

:testPrefix
call set "newN=%%oldN:*%prfx%=%%"
if /i not "%oldN%"=="%newN%" if /i "%oldN%"=="%prfx%%newN%" set "ToRename="
goto :eof

:skipProcedures
pushd "Folder"
for /d %%D in (*) do (
  pushd "%%D"
  for /r %%F in (*) do (
    for %%P in ("%%F\..") do (
      set "ToRename=Yes"
      set "prfx=%%~nxP_"
      set "oldN=%%~nxF"
      call :testPrefix
      if defined ToRename (
        echo ren "%%F" "%%~nxP_%%~nxF"
      ) else (
        echo prefixed already "%%F" "%%~nxF"
      )
    )
  )
  popd
)
popd

Ressources (lecture obligatoire, incomplète):


fonctionne très bien après que j'ai supprimé le 'écho'. Je suppose que c’est ce que vous vouliez dire par le débogage.
Blodge
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.