Страница 2 из 2
Добавлено: Чт окт 16, 2008 20:06
belorus
Есть ли возможность бэкапить несколько файлов одним нажатием, или только одного под курсором?
Добавлено: Чт окт 16, 2008 23:53
Вахмурка
Вопрос, конечно, интересный.
Если передать кнопке ТС параметр %L (и ряд подобных - см. справку), то ТС создает во временной директории файл. Тот содержит список выделенных файлов или текущий, если ничего не выделено. Если "скормить" этот файл батнику, то с помощью команды shift можно однотипно обрабатывать все файлы. Но я не знаю, как заставить батник таскать имена из файла по одному. Из командной строки - легко, из файла - похоже, нельзя.
А раз батник оказывается бессильным, пишем скрипт, которому передаем параметр %L. Например:
http://powerpro.wincmd.ru/Scripts/ListDateTime.htm
http://powerpro.wincmd.ru/Scripts/MultiCopy.htm
Добавлено: Пт окт 17, 2008 00:12
belorus
За наводку на скрипты спасибо, но все же хотелось бы встроенными средствами. Ну на крайняк батником.
Добавлено: Пт окт 17, 2008 00:37
Вахмурка
Отлично - стимул есть. Значит, снимаем с пыльной полки учебник по DOS, или по-современному качаем, или поглядываем в
мой, и пробуем.
Получится - похвастайся.
Добавлено: Пт окт 17, 2008 02:46
Tol!k
belorus, бэкапить надёжнее не в .bak, а в архив. Да и кнопок для архивации написано уже на небольшую панельку. Но если хочешь именно .bak, то получай:
----------------------------------- bak.cmd -----------------------------------
@echo off
chcp 1251 > nul
for /f "delims=" %%a in (%1) do copy /b "%%a" "%%~nxa.bak"
----------------------------------- bak.cmd -----------------------------------
---------------------------- кнопка ----------------------------
TOTALCMD#BAR#DATA
%commander_path%\bak.cmd
%L
%commander_path%\WCMICONS.DLL,39
.bak-копии выделенных файлов
-1
---------------------------- кнопка ----------------------------
Добавлено: Пт окт 17, 2008 10:48
Batya
Ну зачем же так заморачиваться?
F5 или Shift+F5 с маской "*.*.bak" решают проблему.
Добавлено: Пт окт 17, 2008 12:07
belorus
To Tol!k
Вот спасибо!
belorus, бэкапить надёжнее не в .bak, а в архив
Просто бывает нужно бэкапить несколько мелких файлов(для установки русика или кряка

), а так конечно в архив да и на диск записать не помешает.
Всем спасибо за советы.
Добавлено: Пт окт 17, 2008 13:37
Вахмурка
2Tol!k
Круто. Жаль, я уже ушел с батников на скрипты.
2Batya
Это неспортивно - тут народ именно позаморачиваться хочет.
Добавлено: Ср июл 11, 2012 04:18
slideray
Tol!k писал(а):если хочешь именно .bak, то получай:[/size]
----------------------------------- bak.cmd -----------------------------------
@echo off
chcp 1251 > nul
for /f "delims=" %%a in (%1) do copy /b "%%a" "%%~nxa.bak"
----------------------------------- bak.cmd -----------------------------------
а возможно, чтобы батник прописывал в имени дату+время создания бэкапа?
что то типо:
totalcmd_20120711(0416).bak
(*в скобках - час+минута)
Добавлено: Ср июл 11, 2012 11:03
Tol!k
Код: Выделить всё
@echo off &setlocal enableextensions
:: .bak-копии выделенных файлов
:: Параметры: "список" "штамп"
:: Например: "%WL" ".YY_MM_DD.(hh-nn-ss)"
:: Автор: Tol!k
for /f "skip=1 delims=." %%d in (
'wmic.exe OS Get LocalDateTime ^|findstr .'
) do set "DateTime=%%d"
set "stamp=%~2"
call set "stamp=%%stamp:YY=%DateTime:~0,4%%%"
call set "stamp=%%stamp:MM=%DateTime:~4,2%%%"
call set "stamp=%%stamp:DD=%DateTime:~6,2%%%"
call set "stamp=%%stamp:hh=%DateTime:~8,2%%%"
call set "stamp=%%stamp:nn=%DateTime:~10,2%%%"
call set "stamp=%%stamp:ss=%DateTime:~12,2%%%"
for /f "delims=" %%a in ('type %1') do copy /b "%%a" "%%~nxa%stamp%.bak"
Добавлено: Ср июл 11, 2012 23:45
slideray
Tol!k, замечательно! Спасибо!
Вот только минуты некорректно отображает:
на часах - 23ч:38м:56с
скрипт пишет - 23-07-56.bak
может в двенадцатичасовом режиме, округляя минуты...
возможно поправить? или с чем может быть связано?
в параметрах указал:
"%WL" ".YY_MM_DD.(hh-mm-ss)"
p.s.
в целом отлично, устраивает полностью и так... тут уж из любви к искусству, допилить до совершенства.
Добавлено: Чт июл 12, 2012 00:27
Tol!k
slideray писал(а):на часах - 23ч:38м:56с
скрипт пишет - 23-07-56.bak
o_O
запусти
Код: Выделить всё
@wmic.exe OS Get LocalDateTime
@echo %date% %time%
@pause
LocalDateTime
20120712002640.683000+240
12.07.2012 0:26:40.69
Добавлено: Чт июл 12, 2012 01:08
slideray
я так понял отдельным cmd-файлом запускать. Пишет:
Код: Выделить всё
LocalDateTime
20120712010342.214000+240
12.07.2012 1:03:42,24
Для продолжения нажмите любую клавишу . . .
после запуска этого файла минуты всё равно имеют значение "07". Это следовательно не зависит от времени.
Добавлено: Чт июл 12, 2012 01:54
Tol!k
замени везде mm на nn
Добавлено: Чт июл 12, 2012 02:14
slideray
Ага! Сработало! Спасибо!