Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] поиск и сравнение оригинального и резервной копии (.bak) одного и того же файла

Ответить
Настройки темы
CMD/BAT - [решено] поиск и сравнение оригинального и резервной копии (.bak) одного и того же файла

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго всем времени суток. Очень нужна помощь. Нужно организовать не просто поиск файла, а еще и поиск его резервной копии, затем сравнить их и вывести результат сравнения в Блокнот. Сравнение я могу организовать самостоятельно, не совсем ясно как определить резервную копию и где именно ее искать. Имя резервной копии файла передается в качестве пакетного параметра. Если оригинальный файл найден, то осуществляется его сравнение с резервной копией. Если не найден, то выводится сообщение в тот же блокнот о том, что файл не найден. Получается надо сравнивать по датам? Но ведь имя-то одинаковое..Очень бы помог готовый код. Заранее спасибо.

Отправлено: 15:49, 09-10-2011

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


takoff, Ваш вопрос не очень понятен. Попробуйте привести пример с конкретными именами файлов.

Отправлено: 16:21, 09-10-2011 | #2



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

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


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Задание, которое мне дали звучит дословно следующим образом:
Создать акетный файл, предназначенный для организации процесса поиска и сравнения оригинального и резервной копии (.bak) одного и того же файла. Имя резервной копии файла передается в качестве пакетного параметра. Если оригинальный файл найден, то осуществляется его сравнение с резервной копией. Отличия, найденные при сравнении, передаются в отчет, который, в автоматическом режиме загружается в текстовый процессор "Блокнот".
Думаю, что есть например файл 1.bak и его копия, имеющая такое же имя и расширение, только созданная в другое время. Думаю, что надо найти все файлы с таким именем и сравнить их по дате, самый ранний - исходный. Если найдено более 1 файла (если 1, то - только тот, который и является исходным или, например, является копией, а исходный был удален), то сравниваем содержимое самого позднего(копия) и самого раннего(исходный) функцией fc и выводим результат в Блокнот. Меня мучает вопрос, а будет ли сравниваться дата создания файлов или дата их последнего изменения..

Отправлено: 17:14, 09-10-2011 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата takoff:
Если оригинальный файл найден, »
Думаю, раз это задание, тут должно быть проще. Никакого «поиска» не нужно. Достаточно найти первый файл с тем же именем, что и резервная копия, и сравнить их. Вряд ли предполагалось под «найден» нечто более серьёзное.

Т.е., примерно так:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sBakFile=%~1

if not defined sBakFile (
	call :Usage
	exit /b 1
)

if /i "%~x1" neq ".bak" (
	echo [%sBakFile%] is not a backup file
	call :Usage
	exit /b 2
)

if not exist "%sBakFile%" (
	echo Not found [%sBakFile%]
	exit /b 3
)

set sOrigFileName=%~n1

if not exist "%sOrigFileName%.*" (
	echo Not found any original file for backup file [%sBakFile%]
	exit /b 4
)

call :GetTemporaryName

for /f %%i in ("%sOrigFileName%.*") do (
	fc.exe /l "%%i" "%sBakFile%" 1>"%TemporaryName%"
	start /wait "" "notepad.exe" "%TemporaryName%"
	del /f /q "%TemporaryName%"
	goto :Break
)
:Break

endlocal
exit /b 0
rem ==========================================================================

rem ==========================================================================
:Usage
	echo Usage: %~nx0 ^<Backup file name^>
	exit /b 0
rem ==========================================================================

rem ==========================================================================
rem Функция GetTemporaryName()
rem
rem Серый форум / CMD/BAT: генерация пути для временного файла или папки
rem (http://forum.script-coding.com/viewtopic.php?id=6259)
rem ==========================================================================
:GetTemporaryName
	setlocal enableextensions enabledelayedexpansion

:NextName
	set sTempName=%temp%\temp%random%.tmp

	if exist "%sTempName%" goto :NextName

	set sProcName=%~0

	endlocal & set %sProcName:~4%=%sTempName%
	exit /b 0
rem ==========================================================================

Для чего-либо более серьёзного недостаточно исходных данных.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:30, 10-10-2011 | #4


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Большое спасибо, Iska, уже разобралась, просто сама не совсем правильно интерпретировала задание, все оказалось еще проще:
я заточила код на частную ситуацию, когда резервная копия файла, например Name1.txt называется Name1.txt.bak, а потом в аргумент функции FC включила модификатор, отрезающий расширение и использующий только имя файла Name1.txt
fc %1 %~n1>CompareResult.txt
%1- это Name1.txt
%~n1- это Name1.txt.bak
CompareResult.txt- файл с результатом

Отправлено: 07:32, 11-10-2011 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] поиск и сравнение оригинального и резервной копии (.bak) одного и того же файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
MSFT SQL Server - [решено] Не восстанавливается база из резервной копии SQL Server 2008 Destruction Программирование и базы данных 3 22-12-2011 11:42
Загрузка - [решено] Архивация и восстановление Vista Ultimait. Создание резервной копии minos66 Microsoft Windows Vista 3 11-01-2009 13:08
Установка - Удаление резервной копии windows XP Alfa_Dog Microsoft Windows 2000/XP 1 21-04-2008 01:22
Восстановление db/mysql из резервной копии ZDemon Общий по Linux 6 09-01-2004 07:13




 
Переход