2016-07-17 4 views
1

Итак, я работаю над этой игрой, в которой у меня есть тестеры. Из-за размера файлов игры я хочу создать патч, который может быть применен к предыдущей сборке игры, таким образом, мои тестеры могут «исправить» старый вариант и получить новый вариант, не перезагружая целая игра. Чтобы создать этот патч, вот что мне нужно сделать:Сравните две папки, скопируйте файлы, отличные от одной папки, другой

Предположим, у меня есть 3 папки. Folder 1 - это старая сборка игры, Folder 2 - это более новая сборка игры, в которой я буду создавать патч, и Folder 3 - это то, где будут скопированы файлы для патча.

Что мне нужно сделать, так это выполнить цикл пакетного сценария через каждый файл в Folder 2 и проверить, существует ли он в Folder 1. Если файл не существует в Folder 1 или файл существует, но имеет другую сумму хэша, он копируется из Folder 2 в Folder 3. Единственная проблема заключается в том, что я понятия не имею, как сравнивать файлы, чтобы узнать, одинаковы ли они в пакете. Я хочу сравнить их на основе суммы и размера хэша, но не даты изменения.

+0

Проверьте команды ['fc'] (http://ss64.com/nt/fc.html) и [' comp'] (http://ss64.com/nt/comp.html) – aschipfl

ответ

2

Вы можете начать свой сценарий:

@echo off 
set "Folder1=Folder1" 
set "Folder2=Folder2" 
set "Folder3=Folder3" 

for /f "delims=" %%F in ('dir /b "%folder2%"') do (
    if not exist "%folder1%\%%F" copy "%folder2%\%%F" "%folder3%" && echo Copied "%%F" 
    ) 
pause 
Exit 

EDIT:

Или с помощью FC команда с /b Выполнить сравнение бинарных

echo off 
set "Folder1=path\to\Folder1" 
set "Folder2=path\to\Folder2" 
set "Folder3=path\to\Folder3" 

for /f "delims=" %%F in ('dir /b "%folder2%"') do (
    if exist "%folder1%\%%F" (
     fc /b "%folder1%\%%F" "%folder2%\%%F" 
     if "%errorlevel%" EQU "1" (
      copy "%folder2%\%%F" "%folder3%" && echo Copied "%%F" 
     ) 
    ) else (
     copy "%folder2%\%%F" "%folder3%" && echo Copied "%%F" 
    ) 
) 
pause 
Exit 
-3

Я бы рекомендовал использовать VB для сравнения. См https://support.microsoft.com/en-us/kb/320346

+0

Это Q & A сайт, а не форум. Если вопрос запрашивает решение с использованием интерпретатора команд Windows, тогда это вопрос, на который нужно ответить. Вы можете предоставить предложения ** дополнительно **, чтобы ответить на вопрос, если обнаружите, что добавляет что-нибудь полезное. Простое предложение выбрать другую проблему не полезно, -1. – IInspectable

+0

Ehm, помощник. Когда я сказал это, я не мог комментировать. – Rootel

+1

И вы, конечно, работать трудно потерять * комментарий везде * привилегия снова, тоже. Во всяком случае, неспособность комментировать не является достаточным объяснением для публикации ответа, то есть нет. – IInspectable

Смежные вопросы