Renombrar directorios bajo DOS

bud35000 Mensajes publicados 155 Estado Miembro -  
 Gordon -
Hola,
me gustaría renombrar toda una serie de directorios cambiando la extensión.
He creado para ello un batch.
Mi problema es que con este batch logro añadir una extensión pero no reemplazar la existente.

Aquí mi script:
el que añade la extensión que quiero tener:

rem for /F %%i in ('dir/B') DO RENAME %%i %%i.txt

pero para quitar la extensión que existía previamente, he intentado el siguiente script pero no funciona:

FOR /F %%i in ('dir/B') DO (ECHO %%i) | FOR /F "tokens=1 delims=." %%j in ('findstr "<.doc"') DO RENAME %%i %%j.txt

por otro lado, me he inspirado en un script encontrado en la red pero no veo para qué sirven "tokens" y "delims"...

¿Podríamos ayudarme?
Configuración: Windows 2000 Internet Explorer 6.0

6 respuestas

  1. Darkito Mensajes publicados 1191 Fecha de registro   Estado Miembro Última intervención   545
     
    Hola,
    ¿es para convertir archivos .doc a .txt?

    me parece que:
    rename .doc .txt *.doc 
    debería funcionar (bueno, funciona en Linux...)
    --
    Tøƒ
    1
  2. bud35000 Mensajes publicados 155 Estado Miembro 103
     
    ah, va a hacer falta que cambie de sistema operativo. En DOS no funciona.
    1
    1. Darkito Mensajes publicados 1191 Fecha de registro   Estado Miembro Última intervención   545
       
      Probé bajo DOS:
      rename *.doc *.txt

      parece funcionar, pero solo para los archivos presentes en el directorio en el que te encuentras.
      A ti añadir el bucle para recorrer los directorios
      --
      Tøƒ
      0
  3. bud35000 Mensajes publicados 155 Estado Miembro 103
     
    De hecho, funciona bien así con los archivos.
    Pero no es exactamente lo que quiero hacer; en realidad son directorios los que me gustaría renombrar, pero es mi culpa, debería haberlo especificado.
    1
    1. Darkito Mensajes publicados 1191 Fecha de registro   Estado Miembro Última intervención   545
       
      ¿El nombre de tus carpetas tiene un formato preciso?
      confieso que no veo bien lo que quieres hacer...
      --
      Tøƒ
      0
  4. bud35000 Mensajes publicados 155 Estado Miembro 103
     
    sí. Son carpetas que deben ser tomadas automáticamente por un FTP. Pero sólo las toman la moulinette si tienen una extensión específica. Había puesto .doc o .txt como ejemplo, pero en realidad son otras extensiones específicas de nuestros programas.

    Lo extraño es que el siguiente script funciona. Pero no veo cómo quitar la extensión de origen.
    Es fácil con archivos, pero con las carpetas el dos no parece reconocer el "*.*"
    for /F %%i in ('dir/B') DO RENAME %%i %%i.dem

    gracias de todas formas por tu ayuda.
    1
  5. totor
     
    para directorios o archivos, la sintaxis exacta es:

    c:\test> for /F %i in ('dir/B') DO RENAME %i %i.txt

    hay que estar en el directorio que contiene los archivos y directorios a renombrar.
    puedes cambiar la extensión txt por otra cosa, por ejemplo Gadget.

    a+
    1
  6. Gordon
     
    MOVER

    mueve archivos y renombra archivos y directorios.

    Para mover uno o varios archivos:
    MOVE | /-Y [lector:][ruta]archivo1[,...] destino

    Para renombrar un directorio:
    MOVE | /-Y [lector:][ruta]directorio1 directorio2

    [lector:][ruta]archivo1 Especifica la ubicación y el nombre de(s)
    archivo(s) que quieres mover.
    destino Especifica la nueva ubicación del archivo.
    La Destino puede ser una letra de unidad y
    dos puntos (:), un nombre de directorio, o una
    combinación. Si mueves un solo archivo,
    también puedes incluir un nombre de archivo si
    quieres renombrar el archivo al moverlo.
    [lector:][ruta]directorio1 Especifica el directorio que quieres renombrar.
    directorio2 Especifica el nuevo nombre del directorio.

    /Y Elimina la solicitud de confirmación de
    reemplazo de archivos de destino existentes.
    /-Y Provoca la solicitud de confirmación de
    reemplazo de archivos de destino existentes.

    La opción /Y puede estar presente en la variable de entorno COPYCMD.
    Anula esto usando /-Y en la línea de comandos. Por defecto, se muestra una
    solicitud de confirmación a menos que el comando MOVE se ejecute desde
    un script de comandos.
    0