Utilitário ou técnica para trocar arquivos rapidamente no Windows

2

Freqüentemente preciso trocar um arquivo por outro sem sobrescrever o original.

Digamos que há dois arquivos, foo_new.dll e foo.dll . Eu costumo renomeá-los da seguinte maneira:

  1. foo.dll - > foo_old.dll ,
  2. foo_new.dll - > foo.dll ,
  3. [faça algo com o arquivo substituído],
  4. foo.dll - > foo_new.dll ,
  5. foo_old.dll - > foo.dll .

Não há problema em trocar um único arquivo, mas se torna tedioso ao trocar vários arquivos de uma só vez.

Existe um utilitário Windows (7 e, preferencialmente, XP) ou uma técnica que simplifica esta tarefa e funciona bem ao trocar vários arquivos?

Eu preferiria ser capaz de usá-lo dentro do FreeCommander, mas o Windows Explorer também seria bom.

    
por foraidt 23.08.2012 / 10:21

2 respostas

1

Se você alterar a convenção de nome de arquivo, poderá gerenciar facilmente a troca de vários arquivos via RENAME com curingas.

Em vez de chamar seus arquivos foo_new.dll , chame-os de foo.dll.new . Após a troca inicial, o% original foo.dll será chamado foo.dll.old .

Então você pode usar:

rem First swap in the new files

  rem The following command appends .old to all files with .dll extension (foo.dll -> foo.dll.old)
  ren *.dll *?.old

  rem The following command removes all .new extensions (foo.dll.new -> foo.dll)
  ren *.new *.

rem Now you can work with the new replacements

rem Finally swap out the new files and restore the old ones

  rem Add .new to the dll files (foo.dll -> foo.dll.new)
  ren *.dll *?.new

  rem Remove .old extensions (foo.dll.old -> foo.dll)
  ren *.old *.

Veja Como o comando Windows RENAME interpreta curingas? para obter uma explicação completa de como a RENAME lida com curingas.

Uma das limitações acima é que você pressupõe que você tenha um substituto para cada arquivo .dll no diretório.

Uma extensão simples usando o comando FOR pode ser usada para trocar um subconjunto dos arquivos .dll (somente aqueles para os quais * .dll.new é definido). Provavelmente é mais fácil colocar os comandos em um par de scripts em lote.

Use o seguinte arquivo em lote swapInNew.bat para trocar os novos arquivos:

@echo off
for %%F in (*.new) do (
  move "%%~nF" "~nF.old"
  move "%%F" "%%~nF"
)

Agora você pode trabalhar com os arquivos de substituição conforme necessário

Por fim, use o seguinte arquivo em lote restoreOld.bat para restaurar os arquivos antigos:

@echo off
for %%F in (*.old) do (
  move "%%~nF" "%%~nF.new"
  move "%%F" "%%~nF"
)
    
por 17.09.2012 / 03:25
0

Para (1)

>for /f "delims=" %f in ('dir *.cmd /a-d /on /b') do @ren %f %~nf_old%~xf

Para (2)

>for /f "delims=" %f in ('dir *_new.cmd /a-d /on /b') do @(@set nf=%~nf & @ren %f %nf:~0,-5%%~xf)

Para (3)

rem Anything You Can Do!

Para (4)

>for /f "delims=" %f in ('dir *.cmd /a-d /on /b') do @ren %f %~nf_new%~xf

Para (5)

>for /f "delims=" %f in ('dir *_old.cmd /a-d /on /b') do @(@set nf=%~nf & @ren %f %nf:~0,-5%%~xf)

Gostaria que houvesse necessidade específica de criar um script específico. Qualquer ideia de melhoria é bem vinda. :)

    
por 19.03.2014 / 05:28