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.

blodge
la source

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):

JosefZ
la source
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