Renomeia vários arquivos em sequência através da linha de comando

0

Eu tenho 9873 arquivos em uma pasta no disco rígido nomeados como

  • myname-script.sql.001
  • myname-script.sql.002
  • e assim por diante

Agora preciso renomear esses arquivos para

  • myname-script.001.sql
  • myname-script.002.sql
  • e assim por diante

Quero nomeá-los todos de uma vez por meio da linha de comando.

    
por Ani 08.09.2013 / 21:36

4 respostas

1

Você pode usar vbscript para renomear

Set fso = CreateObject("Scripting.FileSystemObject")

set oFldr = fso.getfolder("C:\file\path")

for each ofile in oFldr.Files

splited = Split(ofile.Name, ".", -1, 1)

ofile.name = splited(0) & "." & splited(2) & "." & splited(1)

Next

Este script dividirá o nome do seu arquivo por meio do . e, em seguida, o reorganizará para trocar as segunda e terceira extensões

    
por 08.09.2013 / 23:14
1

O que você tentou até agora? Você deve realmente fazer alguma pesquisa sobre as possíveis soluções e tentar algumas coisas.

Eu também acho que esta questão pode ser mais adequada para StackOverflow. De qualquer forma, eu modifiquei um VBScript que eu escrevi há um tempo atrás que atinge o que você quer. Eu sou muito mais um novato em VBScript, então, por favor, perdoe o longo termo. Tenho certeza que há uma solução mais elegante, mas definitivamente funciona. O script assume que os arquivos serão encontrados em ordem para que você possa encontrar alguns problemas.

Eu disponibilizei o script por meio da minha conta Google Drive :

link

Você só precisará alterar o caminho do arquivo para que o script funcione. O código VBScript , caso o arquivo não funcione:

Dim sName
Dim fso
Dim folder
Dim count
count = 1

Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Set folder = fso.GetFolder("Your folder path")

For Each file In folder.Files   
    If count < 10 Then
        file.Name = "myname-script.00" + CStr(count) + ".sql"
    End If

    If count > 9 And count < 100 Then
        file.Name = "myname-script.0" + CStr(count) + ".sql"
    End If

    If count > 99 And count < 10000 Then
        file.Name = "myname-script." + CStr(count) + ".sql"
    End If
    count = count + 1
Next
    
por 08.09.2013 / 22:26
1

Simples como puro cmd.exe (lote). Eu não testei, mas acho que entendi.

Como um longo liner da linha de comando:

for /f "eol=: delims=" %A in ('dir /b /a-d *.sql*^|findstr "\.sql\.[^.]*$"') do @for %B in ("%~nA") do @ren "%A" "%~nB%~xA%~xB"

Como um arquivo em lotes:

@echo off
for /f "eol=: delims=" %%A in (
  'dir /b /a-d *.sql*^|findstr "\.sql\.[^.]*$"'
) do for %%B in ("%%~nA") do ren "%%A" "%%~nB%%~xA%%~xB"
    
por 09.09.2013 / 05:33
-2

Você pode usar um loop e alguma estratégia de recortar e colar, como esta:

for i in 'ls myname-script.sql.*' ; do j='ls $i | cut -d '.' -f2' ; k='ls $i | cut -d '.' -f3' ; mv $i myname-script.$k.$j ; done
    
por 09.09.2013 / 17:15