Adicionando prefixos a vários arquivos em uma pasta

0

Eu encontrei um vbscript que me permitirá atualizar nomes de arquivos para substituir "_" por um "" (espaço) que foi muito útil. Minha esperança é fazer algumas pequenas modificações nesse mesmo script para adicionar um prefixo aos mesmos arquivos. No entanto, cada tentativa que fiz para fazê-lo só me deixa preso em um loop infinito que expira e mais ou menos adiciona uma quantidade infinita de prefixos são adicionados. Não consigo descobrir as condições corretas para sair do loop após uma execução em cada arquivo. Abaixo está o roteiro. Qualquer ajuda é apreciada.

Set objFSO = CreateObject("Scripting.FileSystemObject")   
Set Folder = objFSO.GetFolder("C:test")

For Each File In Folder.Files  
    sNewFile = File.Name  
    sNewFile = Replace(sNewFile, "_", "")  
    If (sNewFile <> File.Name) Then  
        File.Move (File.ParentFolder + "\" + sNewFile)  
    End If

Next
    
por Ben Schulte 17.01.2017 / 20:51

1 resposta

1

Que tal:

dim objFSO    : set objFSO = CreateObject("Scripting.FileSystemObject")
dim objFolder : Set objFolder = objFSO.GetFolder(".")
For Each File In objFolder.Files
    if instr(File.Name, "_") > 0  then
      objFSO.MoveFile File.Name, "PREFIX-" & replace(File.Name, "_", " ") 
    end if
Next

Para cada arquivo no mesmo diretório que o script, ele verificará se o nome do arquivo tem um sublinhado: Se sim, ele renomeará esse arquivo para ter uma string "PREFIX-" e substituirá o sublinhado por um espaço. / p>

Pode valer a pena comentar a linha MoveFile e criar uma nova linha com:

wscript.echo "Renaming: " & File.Name & " to: PREFIX-" & replace(File.Name, "_", " ") 

Por exemplo,

dim objFSO    : set objFSO = CreateObject("Scripting.FileSystemObject")
dim objFolder : Set objFolder = objFSO.GetFolder(".")
For Each File In objFolder.Files
    if instr(File.Name, "_") > 0  then
      'objFSO.MoveFile File.Name, "PREFIX-" & replace(File.Name, "_", " ") 
      wscript.echo "Renaming: " & File.Name & " to: PREFIX-" & replace(File.Name, "_", " ") 
    end if
Next

Isso mostrará o que ele fará se você executar:
cscript script.vbs > out.txt

    
por 17.01.2017 / 21:43

Tags