Лог копирования файлов windows

Обновлено: 04.07.2024

Вопрос такой: можно ли написать скриптик, чтобы при копировании файлов он показывал информацию о времени, оставшемся до завершения копирования и сколько процентов скопировано?

а то если пишешь copy . . он просто копирует и не ясно - какая скорость, это на пять минут или на пол дня.

Слышал, что виндовый Командир Нортон (не знаю, как он сейчас называется по-правильному) поддерживает командную строку.

-------
Как сказало Дерево Дровосеку: "я - пень".

Последний раз редактировалось NiOl, 09-12-2009 в 14:45 . Причина: очепятки

Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

т.к. все скриптовые языки однопотоковые, то рассчитать скорость, проценты и т.п. можно только между копированием отдельных файлов, поэтому при копировании нескольких больших файлов такая затея теряет смысл. хотя в некоторых случаях (если есть поддержка API, как в AutoIT) для этого удается задействовать системные потоки, по графическому отображению процессов в CMD есть отдельная тема:

P.S. Это ко 2-му посту.

Не говорите за всех Для PowerShell это никогда не было проблемой.
Впрочем там можно легко получить нативный прогрессбар при копировании (а еще и докачку с приоритизацией трафика) используя модуль BitsTransfer.

Для остальных языков вполне можно использовать стандартный Windows диалог копирования файлов. Делается это через COM-объект shell.application, и на PowerShell выглядит так (думаю сконвертировать на VBS не будет проблемой):

NiOl, нортон командир наверное не будет работать на 64битной винде..
конечно, это всё замечательно, Нортон командир или Фар, но я как-бы скриптик хотел а не софтину.


amel27, спасибо за тему, почитаю, отпишусь.


Xaegr, очень интересно что вы про повершелл но ваш скрипт у меня просто копирует и ничего более не происходит, никакого мониторинга. вообще ничего. Очень хочтелось бы и повершельное решение моей проблемы.

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум

а я - о возможности сваять свой собственный прогресс-бар, в API это обычно делается через определение своей CallBack - функции. »
Ну во-первых, я честно говоря не вижу пока в условии необходимости использования ни нескольких потоков, ни callback функций. Если вы хотите нарисовать совсем свой бар - write-progress. Ну или $host (чтоб совсем на низком уровне). Но если что, в PS есть возможность использовать и callback кода, и многопоточности.
но ваш скрипт у меня просто копирует и ничего более не происходит, никакого мониторинга. »
Это второй вариант? Странно, он должен выводить графическое окно копирования файлов, стандартное как в Windows.
Если у вас Vista/2008 и выше, посмотрите справку к BitsTransfer. Там правда говориться в основном о веб, но файлы он качает тоже прекрасно. Возможность работы в отдельном потоке и прогрессбар встроены

Если рекурсивно, то сложнее:

Требования: PowerShell 2.0, BITS 4.0, Vista/2008 и выше (хотя может и на XP будет работать, но не уверен). На 7/2008R2 всё уже в комплекте.
Вызывать например так:
C:\Root\Copy-FileBITS.ps1 c:\src d:\dst -recurse -priority high

Copy-FileBits.ps1:

А почему не Far Manager? Тем паче, что версия 2.0 идёт под открытой лицензией.
P.S. Это ко 2-му посту. »

У FAR`а даже 2.0 (предыдущий не "Опен", но бесплатен для xUSSR) нет ключей для команды копирования, хотя вроде есть сои скрипты и скрипты можно указывать через параметр. а на счет произведения Питера Нортона не знаю ничего - я его давно не видел, но где-то когда-то слышал, что вроде некие действия можно заставить делать через командную строку.

В принципе есть мысль, как реализовать хоть какой-то мониторинг, но могу только толкнуть мысль, а вот реализовывать реально влом - не стоит овчина выделки (на мой взгляд):

Копированием занимается естественно сам батник.
1. Командой dir /b /a /s (или даже /e ) получаем список того, что будет копироваться и подсчитываем общий объем (через %


А сколько у вас ушло времени на изучение C++ .
Я понимаю, это зависит от человека. но все же:)


Сколько времени на это уйдет ?
Начинаю изучать Си, тяжело мне дается честно сказать. Напишу пример задачи, хотелось бы знать.

что это такое и сколько это стоит?
помогите опознать что это такое и сколько это стоит?

узнать: сколько краски потребуется , что-бы покрасить стены комнаты, и сколько будет это стоить.
Помогите , плз, через 3 дня зачет. Нужно написать форму ВБА. Нужно вводить: длинна комнаты.

при копировании вести лог не только откуда ведется копирование но и куда тут наверно можно будет использовать For для каждого файла и записывать в лог время. Посмотри на форуме примеры где то были >>log.txt дает откуда файл и то что он скопирован
(результат) а нужно видеть куда Добавлено через 13 часов 29 минут
забыл в начале echo off

а можно сделать так что-бы в лог записывалась не системная дата, которая на компьютере а дата изменения файла?

Добавлено через 11 минут
и если папка названа по русски то какие-то кракозябры записываются

если папка названа по русски то какие-то кракозябры записываются Чтобы не было кракозябров, сохраняйте батник в 866 кодировке.
что-бы в лог записывалась не системная дата, которая на компьютере а дата изменения файла? кодировку поменял но по-прежнему не правильно выводится

Решение

Anonymоus, Спасибо огромное. Замечательный батник для бэкапа. Подскажите, пожалуйста, каким именно способом он производит копирование (то есть инкрементальное копирование, то есть только тех файлов и папок, которые подверглись изменению (по принципу robocopy /mir - зеркало) или он в лоб копирует всё). Расскажите какие ещё у написанного вами батника особенности?

666blade666, Anonymоus не был на форуме больше года.

Добавлено через 1 минуту
Но там не используется инкрементальное копирование.

FraidZZ, он просто копирует файлы с заменой и не боле того так? Ну то есть к примеру файл word c одним и тем же именем копируется в определённый каталог и получается так что, даже если файл старый по размеру больше, чем тот что будет скопирован, то новый всё равно копируется затирая собой старый файл, не смотря на то что старый файл был больше по размеру. Типу вопрос: файл с таким-же именем существует в этом расположений - копировать с заменой? И батник говорит - ДА! Я правильно понял, так он работает? FraidZZ, Подскажите пожалуйста ещё вот такую штуку. Реально ли к этому батнику дописать ещё такую строчку, чтобы шла проверка чек-сум файла, ну то есть чтобы проверялась целостность скопированного файла. То есть вот чего не хватает - файл скопировался, а в логе надпись, что все данные скопированы верно, база абсолютно до битика скопирована правильно и работоспособна, можете спать спокойно =), вот что-то типу такого. Это называется, проверка хеш-сумм или проверка файла на целостность что-то в этом роде. Такое возможно добавить?

Скорость и так невелика - а после такого апгрейда она ещё глубже сядет. Тогда уж лучше использовать полноценный ЯП.

Хотя можно всё. Но нужны сторонние утилиты для получения md5 или crc32.

FraidZZ, подскажите, а каким-то ещё способом, кроме как запустить скопированную базу данных - можно проверить работоспособность бэкапа, ну то есть - как проверить что бэкап, который был скопирован через выше приведённый скрипт работоспособен и копирование произошло успешно на все 100%? Только непосредственно запустив бэкап через базу? Или можно как-то через скрипт это сделать? Если утилиты, то какие и как их туда подвязать (я имею в виду к батнику приведённому выше).

И ещё возможно ли дописать в этот батник пункт, который бы находился в конце лога копирования и говорил бы о том, сколько всего по весу скопировано файлов? Ну то есть чтобы в конце лога было видно суммарное количество, которое было скопировано.

А по поводу скорости, так бог с ней пусть копирование будет на много медленнее идти, зато будет спокойно на душе, что все файлы скопировались успешно на все 100% и в случаи падения базы бэкап будет 100% рабочим.

Добавлено через 1 час 11 минут
FraidZZ, Вот к примеру есть программа TeraCopy, которая позволяет после копирования проверить целостность скопированных файлов (MD5), вот только как можно через командную строку пустить эту программу на копирование, а затем ею же проверить хеш-суммы скопированных файлов на целостность и затем занести в лог результат копирования, что он удовлетворительный или копирование произведено с ошибками. Вы знаете как это сделать?


В зависимости от того, сколько файлов уже было загружено, определить директорию, куда загружать новый
В БД есть 3 колонки: file_new, file_new2 и file_new3. Если в file_new пусто, то файл грузится сюда.

Непонятно что с новым диском: низкая скорость копирования файлов
Купил на пробу новый Corsair Force LS 60 Gb (F60GBLSB). 1. Тест CrystalDiskMark вроде как.

Перейти ко времени . что это?
Что это и как этим пользоваться? Первый раз вижу такой диалог .

Используй WMI, это действительно лучше api-хука.

набор готовых скриптов:

Остается только пожелать удачи. По отзывам, Device Lock, не смотря на многолетнюю историю продукта, рекламу, сертификаты все же доставляет множество проблем, но лучшего продукта при этом нет. А вы готовы потягаться с ДиалогНаукой. :-)

Не понял, с помощью WMI можно сделать все то что я описал в начале?

Насколько, я заметил WMI позволяет отслеживать только создание, удаление и изменение файлов в указанной области. Решение задачи было бы возможно, если бы WMI позволял как-нибудь реагировать на подключение новых запоминающих устройств. Такое возможно?

А как определить самое важное - имя исходного файла? Можно путем сопостовления конечного и исходного файла. Но ведь если человек сохранит файл, скажем в Exel'e, через "Сохранить как. " и поменяет имя конечного файла, то мы в итоге получим очень размытую информацию?

Не понял, с помощью WMI можно сделать все то что я описал в начале?

Насколько, я заметил WMI позволяет отслеживать только создание, удаление и изменение файлов в указанной области. Решение задачи было бы возможно, если бы WMI позволял как-нибудь реагировать на подключение новых запоминающих устройств. Такое возможно?

А как определить самое важное - имя исходного файла? Можно путем сопостовления конечного и исходного файла. Но ведь если человек сохранит файл, скажем в Exel'e, через "Сохранить как. " и поменяет имя конечного файла, то мы в итоге получим очень размытую информацию?

Вопросы касаются исключительно vbs:

А есть метод определить копирование файла на CD? Для стандартного win-резака можно следить за папкой, куда винда временно кидает файлы (кстати, путь не напомните?), но как быть с Nero и т.п.

Сложности добавляет то, что надо отслеживать пермещение ВСЕХ файлов, а не отдельных.

На данный момент делаю:

1) создаю скрипт следящий за текущими и новыми подключенными съемными дисками, Floppy и CD приводами, ну и за локальными дисками с интерфейсом usb (для внешних хардов). Если уже подключенны такие устройства, то для какждого из них запускается скрипт описанный во втором разделе.

2) как только подключается запоминающее устройство к usb или втыкается floppy-дискета - запускается скрипт реагирующий на события записи и изменения файлов. Если таковое наступает - отпраляем данные на сервер.

3) после отключения устройства убиваю процесс.

В связи со всем этим возникает следующие вопросы:

1) как определить наличие дискеты во флопи-приводе и диска в сдруме?

2) как запустить из одного скрипта другой, запомнить id процесса и убить по id процесс?

У меня на работе есть хорошая присказка "MSDN, батенька". Произношу не я :) Я обычно говорю "Гугл".

По первому вопросу ответ, но скрипеть будет:

With CreateObject("Scripting.FileSystemObject")
Set dc = .Drives
For Each d in dc
If d.DriveLetter = "A" Then
Do While d.IsReady

А вообще у тебя задача всё больше и больше разрастается, поэтому рекомендую сделать ход конём:

Данила Полевщиков, ну если речь зашла о WMI то можно пример основаный на его объектах, а не на FSO?(достаточно указать св-во объекта для логических дисков, типа .IsReady).

Еще вопрос: 1) как можно определить какие логические диски соответствуют физическим; 2) возможно ли используя WMI и методику в ссылках на примеры приведенных выше, узнать какой именно файл был скачен (полный путь)

+ ссылка, к сожалению, мертвая.

Данила Полевщиков, ну если речь зашла о WMI то можно пример основаный на его объектах, а не на FSO?(достаточно указать св-во объекта для логических дисков, типа .IsReady).

Еще вопрос: 1) как можно определить какие логические диски соответствуют физическим; 2) возможно ли используя WMI и методику в ссылках на примеры приведенных выше, узнать какой именно файл был скачен (полный путь)

Логи - это системные события, который происходят в любой операционной системе. С помощью логов можно легко отследить кто, что и когда делал. Читать логи могут не только системные администраторы, поэтому в данной инструкции рассмотрим, как смотреть логи ОС windows.

Ищете сервер с Windows? Выбирайте наши Windows VDS

Просмотр событий для проверки логов.

После нажатия комбинации “ Win+R и введите eventvwr.msc ” в любой системе Виндовс вы попадаете в просмотр событий. У вас откроется окно, где нужно развернуть Журналы Windows. В данном окне можно просмотреть все программы, которые открывались на ОС и, если была допущена ошибка, она также отобразится.

windows_logs

Аудит журнал поможет понять, что и кто и когда делал. Также отображается информация по запросам получения доступов.

windows_logs2

В пункте Установка можно посмотреть логи ОС Виндовс, например, программы и обновления системы.

windows_logs3

Система - наиболее важный журнал. С его помощью можно определить большинство ошибок ОС. К примеру, у вас появлялся синий экран. В данном журнале можно определить причину его появления.

windows_logs4

Логи windows - для более специфических служб. Это могут быть DHCP или DNS.

windows_logs5

Фильтрация событий.

С помощью Фильтра текущего журнала (раздел Действия) можно отфильтровать информацию, которую вы хотите просмотреть.

windows_logs6

Обязательно нужно указать уровень Событий:

  • Критическое
  • Ошибка
  • Предупреждение
  • Сведения
  • Подробности

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

windows_logs7

Просмотр PowerShell логов.

Открываем PowerShell и вставляем следующую команду Get-EventLog -Logname 'System'

В результате вы получите логи Системы

windows_logs8

Для журнала Приложения используйте эту команду Get-EventLog -Logname 'Application

windows_logs9

Также обязательно ознакомьтесь с перечнем аббревиатур:

Get-EventLog –LogName ‘System’ | Format-Table EntryType, TimeWritten, Source, EventID, Category, Message

windows_logs10

Если нужна подробная информация, замените Format-Table на Format-List на

Get-EventLog –LogName ‘System’ | Format-List EntryType, TimeWritten, Source, EventID, Category, Message

Формат информации станет более легким

windows_logs11

Get-EventLog –Logname ‘System’ –Newest 20

vyivesti-sobyitiya

Если нужен список, позднее даты 1 января 2018 года, команда

Get-EventLog –LogName ‘System’ –After ‘1 января 2018’

Надеемся, данная статья поможет вам быстро и просто читать логи ОС Windows.

Желаем приятной работы!

Как установить свой образ на ВДС сервер с Виндовс, читайте в предыдущей статье.

Читайте также: