1. Usa las etiquetas para insertar código, lee mi firma.
2. ¿Qué problema tienes exactamente con el código que has mostrado?, intenta ser específico.
3. ¿Qué hay de los métodos
fct_log_Texte y
DirectoryEmpty?, no aparecen en el código.
4. Por defecto Windows no permite utilizar ciertos caracteres especiales al nombrar directorios/archivos, puedes descartar muchos caracteres innecesarios del For para aumentar el rendimiento.
5. El último For del código que has mostrado, tiene la agrupación abierta, por lo que dará error de sintaxis.
Prueba de la siguiente manera:
@Echo OFF & Setlocal EnableDelayedExpansion
Set "sourceDirPath=C:\Users\"
Set "dirNamePattern=_C_"
(MKDir "%srcDir%")2>Nul
For /D /R "C:\users" %%# In ("*%dirNamePattern%*") Do (
(Echo "%%~nx#" | findstr "[\+\(\)\@\#\$\{\}\[\]\'\;\,\`\&\%%\^\.]")1>Nul 2>&1 && (
Call :DirtyWork "%%~nx#" "%%~f#"
)
)
Pause&Exit /B 0
:DirtyWork :: %1=Directory Name, %2=Directory Path
Set "renamedName=%~1"
For %%# In ("+","(",")","@","#","$","{","}","[","]","'",";",",","`","&","%%","^") Do (
Set "renamedName=!renamedName:%%~n#=!"
) & Set "renamedName=!renamedName:.=!"
Echo: Dir Name: "%~1"
Echo: Rename : "!renamedName!"
Goto :EOF
Saludos!