Вопрос Утилита или техника для быстрой замены файлов в Windows


Мне часто приходится заменять один файл другим, не перезаписывая оригинал.

Допустим, есть два файла, foo_new.dll а также foo.dll, Я обычно переименовываю их следующим образом:

  1. foo.dll -> foo_old.dll,
  2. foo_new.dll -> foo.dll,
  3. [сделать что-то с замененным файлом],
  4. foo.dll -> foo_new.dll,
  5. foo_old.dll -> foo.dll,

Это нормально для обмена одним файлом, но становится утомительным при одновременном обмене несколькими файлами.

Есть ли Windows (7 и предпочтительная XP) утилита или метод, который упрощает эту задачу и хорошо работает при замене нескольких файлов?

Я предпочел бы использовать его из FreeCommander, но Windows Explorer тоже будет в порядке.


2
2017-08-23 08:21


происхождения




ответы:


Если вы измените соглашение об имени файла, вы можете легко управлять общими файлами через RENAME с помощью подстановочных знаков.

Вместо вызова ваших файлов foo_new.dll, позвони им foo.dll.new, После первоначального свопа оригинал foo.dll будет называться foo.dll.old,

Затем вы можете использовать:

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 *.

Видеть Как команда Windows RENAME интерпретирует подстановочные знаки? для полного объяснения того, как RENAME обрабатывает подстановочные знаки.

Одно из ограничений вышеизложенного предполагает, что у вас есть замена для каждого DLL-файла в вашем каталоге.

Простое расширение с помощью команды FOR можно использовать для подкачки подмножества DLL-файлов (только те, для которых задано * .dll.new). Пожалуй, проще всего поставить команды в пару пакетных скриптов.

Используйте следующее swapInNew.bat пакетный файл для замены в новых файлах:

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

Теперь вы можете работать с файлами замены по мере необходимости

Наконец, используйте следующие restoreOld.bat пакетный файл для восстановления старых файлов:

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

1
2017-09-17 01:25





Для (1)

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

Для (2)

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

Для (3)

rem Anything You Can Do!

Для (4)

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

Для (5)

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

Желательно, чтобы была конкретная потребность в разработке конкретного сценария. Любая идея для улучшения приветствуется. :)


0
2018-03-19 04:28