|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Необходимо реализовать задачу с расчётом хеша в директориях и сохранением в фаил. |
|
|
CMD/BAT - [решено] Необходимо реализовать задачу с расчётом хеша в директориях и сохранением в фаил.
|
Новый участник Сообщения: 46 |
Мне это необходимо для автоматизированного бекапа через программу GoodSync, там можно выполнять команды до синхронизации(бекапа).
Так вот я хочу чтобы перед синхронизацией создавался по всем правилам созданный фаил с контрольной суммой всех файлов в директории и поддиректориях, исключая при этом файлы Thumbs.db (и не только, зависит от конкретной бекап-задачи). Причём чтобы была возможность сохранять этот фаил со списком контрольных сумм файлов в произвольном месте а не сканируемой директории. Искал консольные утилиты для расчёта контрольных сумм, но так и не нашёл таких, в которых было бы возможно задавать исключения для определённых имён файлов. |
|
Отправлено: 09:25, 17-12-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 09:48, 17-12-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 46
|
Профиль | Отправить PM | Цитировать Iska,
1 MD5 2 Windows XP, Windows 7. |
Отправлено: 09:49, 17-12-2013 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Думаю, для вычисления удобнее всего будет использовать скрипт на PowerShell, скажем: Use PowerShell To Calculate the Hash of a File | Learn Powershell | Achieve More и т.п.
|
Отправлено: 10:20, 17-12-2013 | #4 |
Новый участник Сообщения: 46
|
Профиль | Отправить PM | Цитировать Iska, боюсь мне самому не осилить скриптовый язык :-(
|
|
Отправлено: 10:43, 17-12-2013 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать function GetMD5Hash([System.String]$sFile) { $oHashAlgorithm = [Security.Cryptography.HashAlgorithm]::Create("MD5") $oStreamReader = ([System.IO.StreamReader]$sFile).BaseStream -join ($oHashAlgorithm.ComputeHash($oStreamReader) | ForEach-Object -Process { "{0:x2}" -f $_ }) $oStreamReader.Close() } $sRootPath = "E:\Песочница\0328" $sMD5ListPath = "E:\Песочница\0336\MD5 List.txt" Get-ChildItem -Path $sRootPath -Recurse |` Where-Object -FilterScript { -not $_.PSIsContainer -and "Thumbs.db", "Descript.ion" -notcontains $_.Name } |` ForEach-Object -Process { "$(GetMD5Hash $_.FullName)`t$($_.FullName)" } | Out-File -FilePath $sMD5ListPath -Encoding Unicode |
Отправлено: 12:01, 17-12-2013 | #6 |
Новый участник Сообщения: 46
|
Профиль | Отправить PM | Цитировать Iska, спасибо. Вот только необходимо чтобы пути были относительными. Так как бекапы на удалённом устройстве располагаются по другим путям. Да и если их верифицировать на основном компьютере всё равно они будут лежать по другим путям.
Сейчас всё отображается вот так C:\Test\123.txt C:\Test\sync\test1.jpg C:\Test\sync\test2.jpg а необходимо вот так. *123.txt *sync\test1.jpg *sync\test2.jpg И хотелось бы в начале списка дату со временем, например ; Generated on 2013-12-17 at 13:00:00 |
Отправлено: 13:11, 17-12-2013 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Пробуйте:
|
Отправлено: 19:11, 17-12-2013 | #8 |
Новый участник Сообщения: 46
|
Профиль | Отправить PM | Цитировать Iska, результирующий файл контрольных сумм не воспринимает программа чекер из-за двух моментов.
Первый момент заключается в том что фаил использует какую-то экзотическую кодировку UCS-2 Little Endian (согласно Notepad++) за место UTF-8. И второй момент заключается в том что между контрольной суммой и именем файла стоит символ не пробела (а Tab?). Я в Notepad++ преобразовал фаил в UTF-8, сменил удлинённый пробел на обычный и вроде как всё работает. Надеюсь что это можно исправить в самом скрипте :-) |
Отправлено: 01:22, 18-12-2013 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата DjBoBo:
![]() Цитата DjBoBo:
![]() Цитата DjBoBo:
|
|||
Отправлено: 01:46, 18-12-2013 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Создать общий списк файлов в директориях | antonyk | Скриптовые языки администрирования Windows | 6 | 14-01-2012 15:17 | |
Proxy/NAT - Как реализовать задачу : минипровайдер внутри офиса. | djeff | Сетевые технологии | 0 | 24-05-2010 11:15 | |
VPN - Необходимо реализовать подключение Site-to-site | extremal | Сетевые технологии | 6 | 25-03-2008 14:56 | |
vsftpd: нет прав на удаления файлов в домашних директориях | steepz | Программное обеспечение Linux и FreeBSD | 6 | 09-09-2006 16:37 | |
Групповая политика в Активных директориях | Vi-P | Microsoft Windows NT/2000/2003 | 3 | 15-03-2006 17:45 |
|