Así, tengo un montón de archivos sin extensión. Quiero escribir un windows script por lotes que se:

  1. Encontrar archivos sin extensión (en una carpeta especificada)
  2. Agregar .bla al final del nombre de archivo

Yo soy un windows script por lotes noob yo no sé ni por dónde empezar. Sugerencias?

OriginalEl autor Alan | 2009-06-22

3 Comentarios

  1. 28

    Para windows archivos de proceso por lotes, esto va a cambiar el nombre de los archivos con extensión no a el .bla extensión:

    rename *. *.bla
    

    Aviso el primer argumento es una estrella y un punto: *.

    El segundo argumento es: *.bla

    El punto de inicio (*.) combinación representa los archivos con extensiones no en este contexto.

    Antes:

    06/21/2009  11:57 PM                 6 test
    06/21/2009  11:57 PM                 7 test.exe
    06/21/2009  11:57 PM                 7 test2
    

    Después:

    06/21/2009  11:57 PM                 6 test.bla
    06/21/2009  11:57 PM                 7 test.exe
    06/21/2009  11:57 PM                 7 test2.bla
    

    Nota adicional: El opuesto de la línea de comandos sería cambiar el nombre de todos .bla archivos en archivos de extensión.

    EDITAR:

    De forma recursiva el cambio de nombre de archivos sin extensión a través de los subdirectorios (no espacios de apoyo en las rutas de acceso):

    @echo off
    FOR /F %%i in ('dir /b/s/A-d') DO (
      if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
    )
    

    EDIT2:

    De forma recursiva el cambio de nombre de archivos sin extensión a través de los subdirectorios (admite espacios en la ruta):

    @echo off
    for /f "tokens=* delims= " %%i in ('dir /b/s/A-d') DO (
      if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
    )
    
    He pensado que, pero ni siquiera hay un punto al final del nombre… esta todavía funcionan?
    También, ¿cómo puedo incluir subcarpetas?
    Sí, va a trabajar, y cómo muchas subcarpetas estamos hablando?
    He probado, empezar a punto representa los archivos con extensiones.
    Sólo a un nivel de profundidad, pero un montón de ellos.

    OriginalEl autor Wadih M.

  2. 6

    Aquí otra posible comando para cambiar el nombre de archivos con extensiones no de forma recursiva (suponiendo que rutas de los archivos no contienen espacios):

    for /f %i in ('dir *. /b /s /a-d') do rename "%~fi" "%~ni.bla"
    

    Lote versión (con el doble de %):

    @echo off
    for /f %%i in ('dir *. /b /s /a-d') do (
       rename "%%~fi" "%%~ni.bla"
    )
    


    Si los nombres de archivo o carpeta puede contener espacios, utilice este comando:

    for /f "tokens=* delims= " %i in ('dir *. /b /s /a-d') do rename "%~fi" "%~ni.bla"
    

    Por lotes versión:

    @echo off
    for /f "tokens=* delims= " %%i in ('dir *. /b /s /a-d') do (
       rename "%%~fi" "%%~ni.bla"
    )
    

    Edición: aquí es aún más corto one-liner que admite espacios en las rutas de acceso:

    for /r %i in (*.) do ren "%~fi" "%~ni.bla"
    

    Por lotes versión:

    @for /r %%i in (*.) do ren "%%~fi" "%%~ni.bla"
    

    OriginalEl autor Helen

  3. 5

    para ello, en los subdirectorios usar este:

     for /f %a in ('dir /b /ad /s') do rename %a\*. *.bla
    

    si usted está usando esto en un archivo de proceso por lotes, usted necesita el doble de la ‘%’

     for /f %%a in ('dir /b /ad /s') do rename %%a\*. *.bla
    

    edición:

    y si tiene espacios en los nombres de directorio, usted puede probar este (lote versión):

     for /f "tokens=* delims= " %%a in ('dir /b /ad /s') do rename "%%a\*." "*.bla"
    
    bueno! (15 char límite)
    Menor problema aquí no trabajo para directorios con espacios…de lo contrario buena pinta

    OriginalEl autor akf

Dejar respuesta

Please enter your comment!
Please enter your name here