Batch no es para nada lo más apropiado como ya te han indicado, yo te sugiero hacerlo en VBS para no depender de intérpretes de terceros, pero bueno, suponiendo que no tengas conocimientos en otro lenguaje superior a Batch entonces puedes llevarlo a cabo de la siguiente manera:
@Echo Off & SetLocal EnableDelayedExpansion
Set "WorkindDir=C:\documentos\"
PUSHD "%WorkindDir%"
For /D /R %%d In ("*") Do (
Echo:Folder: "%%~fd"
PUSHD "%%~fd"
Echo:---------------
Echo+
For %%f In ("*.pdf") DO (
Call :GetFirstWord "%%~nd"
Echo:Old: "%%~ff"
Echo:New: "%%~dpf!WORD! %%~nxf"
Echo+
Rename "%%~ff" "!WORD! %%~nxf"
)
)
Pause & Exit /B 0
:GetFirstWord
For %%w in (%~1) Do (
Set "WORD=%%~w"
GoTo:EOF
)
Asegúrate de que los nombres de carpetas no contengan los siguientes caracteres reservados para el lenguaje:
( ) [ ] % & ^Resultado de ejecución:
Folder: "C:\test\pepe manolo ibiza"
---------------
Old: "C:\test\pepe manolo ibiza\doc 1.pdf"
New: "C:\test\pepe manolo ibiza\pepe doc 1.pdf"
Old: "C:\test\pepe manolo ibiza\doc 2.pdf"
New: "C:\test\pepe manolo ibiza\pepe doc 2.pdf"
Old: "C:\test\pepe manolo ibiza\doc 3.pdf"
New: "C:\test\pepe manolo ibiza\pepe doc 3.pdf"
Old: "C:\test\pepe manolo ibiza\pepe doc 1.pdf"
New: "C:\test\pepe manolo ibiza\pepe pepe doc 1.pdf"
Folder: "C:\test\pepe manolo ibiza\AAA BBB"
---------------
Old: "C:\test\pepe manolo ibiza\AAA BBB\doc 1.pdf"
New: "C:\test\pepe manolo ibiza\AAA BBB\AAA doc 1.pdf"
Old: "C:\test\pepe manolo ibiza\AAA BBB\doc 2.pdf"
New: "C:\test\pepe manolo ibiza\AAA BBB\AAA doc 2.pdf"
Old: "C:\test\pepe manolo ibiza\AAA BBB\doc 3.pdf"
New: "C:\test\pepe manolo ibiza\AAA BBB\AAA doc 3.pdf"
Presione una tecla para continuar . . .
Saludos