Страница 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, а в архив
Просто бывает нужно бэкапить несколько мелких файлов(для установки русика или кряка :oops: ), а так конечно в архив да и на диск записать не помешает.

Всем спасибо за советы.

Добавлено: Пт окт 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
Ага! Сработало! Спасибо!