Tengo muchos archivos en una compleja estructura de directorios, y por razones que no vale la pena discutir necesito cambiar el nombre de todos los archivos con la extensión de «.inp» tener «.TXT» extensiones. Hay numerosos otros archivos con otras extensiones que no quiero ser tocado, y quiero hacerlo de forma recursiva por lo menos 5 niveles.

Tengo hasta ahora:

for /d %%x in (*) do pushd %%x & Ren *.inp *.TXT & popd

…pero de esto sólo va hacia abajo de un nivel de directorios.

Alguien puede ayudar? Gracias de antemano!

OriginalEl autor Raiden616 | 2013-07-15

3 Comentarios

  1. 21
    for /r startdir %%i in (*.inp) do ECHO ren "%%i" "%%~ni.txt"
    

    debe trabajar para usted. Reemplazar startdir con su partida directoryname y cuando se ha comprobado que esto funciona a su satisfacción, quitar el echo antes de la ren para hacer realidad el cambio de nombre.


    Para la downvoters: ejecutar un archivo por lotes difiere de excuting desde el símbolo del sistema en el que cada %%x donde x es la metavariable (loop-variable de control) debe ser reducida a %, así

    for /r startdir %i in (*.inp) do ECHO ren "%i" "%~ni.txt"
    

    debería funcionar si se ejecuta este desde el símbolo del sistema. Por favor, lea la nota sobre echo.

    Impresionante! Que es como una magia negra simple y eficaz 🙂
    creo que te amo. Gracias por esta solución a un problema que tuvo 2 días de mi vida, excelente trabajo, gracias!

    OriginalEl autor Magoo

  2. 28

    En Windows 7, la siguiente línea de comando funciona para mí, para cambiar el nombre de todos los archivos, de forma recursiva, en *.js *.txt:

    FOR /R %x IN (*.js) DO ren "%x" *.txt
    
    Esto funcionó, la respuesta seleccionada no, dijo «%%i fue inexpected». Gracias por esto !
    Tengo el mismo error «%%i fue inexpected» en el código del aceptados respuesta. Nota tendrás a cd para el inicio directorio
    Eso es debido a que la respuesta seleccionada se supone que la línea está en un archivo por lotes. Si se ejecuta desde el símbolo del sistema, usted necesita para cambiar cada %% a %
    Eso es debido a que la respuesta seleccionada se supone que la línea está en un archivo por lotes. Si se ejecuta desde el símbolo del sistema, usted necesita para cambiar cada %% a %

    OriginalEl autor john smith

  3. 2

    John Smith respuesta es excelente, y funciona. Pero para ser completamente claro (tuve que volver a leer magoo’s notas para averiguar la correcta sintaxis), aquí es exactamente lo que usted necesita hacer…

    BATCH FILE:
    FOR /R %%x IN (*.js) DO ren "%%x" *.txt
    
    COMMAND LINE:
    FOR /R %x IN (*.js) DO ren "%x" *.txt
    

    Hasta el voto de sus respuestas, no soy más que un humilde formater…

    OriginalEl autor Roger Hill

Dejar respuesta

Please enter your comment!
Please enter your name here