Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Сравнение даты изменения файлов и замена старого на новый (http://forum.oszone.net/showthread.php?t=247707)

Tosyk 26-11-2012 07:26 2032919

Сравнение даты изменения файлов и замена старого на новый
 
Тема такая:

Есть игра, которая хранит сохранения в "блабла"
Есть 2 компьютера.

Проблема: поиграл в игру на одном компьютере, пересел за второй - а там нет сохранений. Приходится перетаскивать на флешке или ещё как.

Более гибкий выход - использовать Dropbox.

Что хотелось бы:
- поиграл в игру
- нажал на батник
- батник проверил наличие сохранений (и дату изменения если сохранения есть) в папке в Dropbox
- батник проверил дату изменения сохранений в "блабла"
- если сохранения в "блабла" новее то батник копирует их в папку на Dropbox с заменой
- переходим на другой комп
- запускаем батник
- батник проверяет опять там и там дату и заменяет в "блабла" новыми сохранениями

вот и всё, как и написано в сабже: проверка на новизну файла и замена старого на новый

Спасибо.

Kazun 26-11-2012 08:53 2032935

Poor Man Backup Using Robocopy, 7Zip and DropBox

Iska 26-11-2012 09:58 2032959

Не проще ли просто обойтись символическими ссылками?

Tosyk 26-11-2012 10:39 2032977

Kazun, сейчас посмотрю

Цитата:

Цитата Iska
Не проще ли просто обойтись символическими ссылками? »

что вы имеете ввиду?

Iska 26-11-2012 11:33 2033004

Цитата:

Цитата Tosyk
что вы имеете ввиду? »

Есть некая
Цитата:

Цитата Tosyk
… игра, которая хранит сохранения в "блабла" »

Делаете связь каталогов или символическую ссылку с «блабла» в папку «%UserProfile%\Мои документы\Dropbox». И всё. Нужен только толстый канал и наличие заданного места (из выделенного на серверах Dropbox).

Tosyk 26-11-2012 12:27 2033034

Цитата:

Цитата Iska
Делаете связь каталогов или символическую ссылку »

расскажите на примере

как я понимаю сделать в папке "блабла" ссылку на файл в папке дропбокса?

Iska 26-11-2012 23:10 2033523

Цитата:

Цитата Tosyk
как я понимаю сделать в папке "блабла" ссылку на файл в папке дропбокса? »

Неверно понимаете. Надо наоборот — создать в папке Dropbox'а ссылку на папку с сохранениями.

Цитата:

Цитата Tosyk
расскажите на примере »

Поскольку у меня Windows версии не 6.0, не 6.1 и не 6.2, а ниже — я хоть и могу создать символическую ссылку, но использовать её ОС не сможет. Посему в примере я создаю связь каталогов, используя «горячую» клавишу Alt-F6 в Far Manager'е. Вы можете использовать для создания связи утилиты командной строки, а если у Вас версия ОС от Vista и выше — попробовать и другой тип связи, например символическую ссылку на папку.

Например, есть у Вас некая игра «Some Game», её настройки хранятся у Вас, например, в «%AppData%» в папке «Some Game». Предположим, что, наряду с другими, внутри этой папки есть и папка «Saves», куда складываются сохранения игры. Тогда достаточно создать связь для этой папки «Saves» в папку Dropbox'а:



Не забывайте, что изначальный максимальный размер места, выделяемого Dropbox'ом — 2 Гб.

Tosyk 27-11-2012 04:34 2033623

Спасибо за разъяснение.
так, значит ссылка на папку в «%AppData% будет лежать в папке на Dropbox, но игра же смотрит именно в «%AppData%.

или это работает как синхронизация: нужно открыть Far нажать Alt+F6 и тогда папки синхронизируются?

если да, то можно ли сделать так чтобы не открывать и не устанавливать дополнительных программ (Far), только для этого, можно ли обойтись стандартными средствами Windows.

И да, у меня Win7x64 на обоих компьютерах.

Iska 27-11-2012 04:55 2033625

Tosyk, синхронизируются они примерно так:

1. Вы играете, сохраняетесь. В «%AppData%\Some Game\Saves» обновляется существующий файл/появляется новый файл. Поскольку созданная ссылка «%UserProfile%\Мои документы\Dropbox\Saves» указывает на «%AppData%\Some Game\Saves» — файлы будут видны и там. Запущенный клиент «Dropbox.exe» обнаруживает, что содержимое в подконтрольной ему папке «%UserProfile%\Мои документы\Dropbox» изменилось и начинает синхронизацию этого содержимого с Вашей учётной записью на своих серверах (в данном случае — выгрузку).

2. Вы приходите в место N, запускаете машину, регистрируетесь под своей учётной записью. Клиент «Dropbox.exe» после своего запуска связывается с Вашей учётной записью на своих серверах, обнаруживает устаревание содержимого подконтрольной ему папки «%UserProfile%\Мои документы\Dropbox» и начинает синхронизацию этого содержимого с Вашей учётной записью на своих серверах (в данном случае — загрузку). Поскольку созданная ссылка «%UserProfile%\Мои документы\Dropbox\Saves» указывает на «%AppData%\Some Game\Saves» — файлы на самом деле будут сохраняться именно в «%AppData%\Some Game\Saves». По завершении синхронизации можете приступать к игре.

Естественно, описанную операцию по созданию ссылки из «%AppData%\Some Game\Saves» в «%UserProfile%\Мои документы\Dropbox» нужно проделать один раз на всех машинах, где Вы будете играть. Равно как и установить клиент Dropbox.

Цитата:

Цитата Tosyk
… можно ли сделать так чтобы не открывать и не устанавливать дополнительных программ (Far), только для этого, можно ли обойтись стандартными средствами Windows. И да, у меня Win7x64 на обоих компьютерах. »

Можно. Воспользуйтесь, например, информацией по командам отсюда: Символьная ссылка — Википедия. Детали можете почитать у Вадима: Как работают жесткие и символические ссылки | Вадим Стеркин. Сам я не могу дать Вам готовую команду, поскольку у меня не Windows 7.

Tosyk 28-11-2012 05:36 2034418

Iska, создаю я значит ссылку на ПЕРВОМ компьютере, появляется символическая в дропбоксе, всё отлитчно (хотя отличить от обычной ссылки её невозможно).
соответственно дропбокс на ВТОРОМ компьютере закачивает этот файл к себе.
пробую создать символическую ссылку на ВТОРОМ компьютере, говорит файл уже есть! окей, удаляю файл со ВТОРОГО компьютера из дропбокса и делаю ссылку и создаётся символическая ссылка в дропбоксе на ВТОРОМ компьютере, но
в итоге ничего не синхронизирцется, при изменении файла на ВТОРОМ компьютере файл на ПЕРВОМ компьютере не меняется!

сомневаюсь что и жёсткие ссылки помогут

но может быть у вас есть какие-то мысли по этому поводу?

Iska 28-11-2012 06:22 2034425

Цитата:

Цитата Tosyk
Iska, создаю я значит ссылку на ПЕРВОМ компьютере, появляется символическая в дропбоксе, всё отлитчно »

Пока всё верно.

Цитата:

Цитата Tosyk
(хотя отличить от обычной ссылки её невозможно). »

Я — отличаю:



Цитата:

Цитата Tosyk
соответственно дропбокс на ВТОРОМ компьютере закачивает этот файл к себе. »

Вы на второй машине сначала создаёте ссылку с «%AppData%\Some Game\Saves» в «%UserProfile%\Мои документы\Dropbox» (т.е. — те же действия, что и на первой машине), а затем только подключаетесь к интернету.

Я попробую смоделировать сегодня ситуацию у себя.

Tosyk 29-11-2012 04:28 2035025

в общем пришёл к понимаю, что dropbox не взаимно синхронизирует файлы с одинаковыми именами, а переименовывает на одной из машин файл с таким же именем (не понятно как он выбирает на какой машине это делать, у меня переименовал более новый файл) в

test (USERNAME-PC's conflicted copy 2012-11-29).ini

и помимо переименования закачивает на машину ещё и файл с таким же именем с другой машины, в итоге у нас есть 2 файла:

test (USERNAME-PC's conflicted copy 2012-11-29).ini (является переименованной символьной ссылкой)
test.ini (является вновь закачанным файлом)

для теста создал файл test.ini на обеих машинах
всё делал через teamviewer с отключёным dropbox'ом, после чего практически секунда в секунду включил dropbox на обеих машинах, ждал

есть у вас какие-нибудь мысли по этому поводу?

Iska 29-11-2012 13:55 2035236

Tosyk, проверил. Сработало обратное: создание ссылки с папки в каталоге Dropbox'а в каталог игры. Т.е., на первой машине Вы берёте каталог с сохранениями и перемещаете его в папку Dropbox'а. Затем создаёте ссылку с этой папки, находящейся в каталоге Dropbox'а, в каталог игры (под тем же именем). На прочих машинах — сначала дожидаетесь, пока Dropbox не синхронизирует папку со своим сервером, затем удаляете папку с сохранениями из каталога игры и делаете ссылку с папки, находящейся в каталоге Dropbox'а, в каталог игры (под тем же именем).

Понятно? Пробуйте.

Tosyk 30-11-2012 08:40 2035705

Iska, вполне логично и всё работает.

есть пару моментов:
1 - увеличивается размер занимаемого места в Dropbox
2 - при создании игрой новых сохранений/файлов их придётся вручную переносить в Dropbox, что собственно ломает половину идеи

- можно ли сделать линк для всей папки, чтобы при сохранении игра сохраняла оригинал файла в Dropbox? а в своей папке хранила только ярлык
- можно ли определить имя текущего пользователя (%USERNAME%) и подставлять это имя в .cmd вида:

"C:\Users\%USERNAME%\AppData\Local\SOMEGAME\Savegames\savegame00.dat" "D:\My Dropbox\Public\00-archive\01-games\00-savegames\SOMEGAME\Savegames\savegame00.dat"

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

спасибо вам огромное в любом случае, половина того, что я хотел сделано даже проще чем я мог подумать.

Iska 30-11-2012 09:23 2035721

Цитата:

Цитата Tosyk
2 - при создании игрой новых сохранений/файлов их придётся вручную переносить в Dropbox, »

С чего бы это вдруг? Они сразу попадают с папку DropBox'a, поскольку теперь папка с сохранениями в игре — это ссылка на папку в DropBox'е.

Цитата:

Цитата Tosyk
- можно ли сделать линк для всей папки, чтобы при сохранении игра сохраняла оригинал файла в Dropbox? »

Ну, а я про что писал выше? Вы сделали как-то иначе?

Tosyk 30-11-2012 10:32 2035760

Iska, ах, точно на папку, вижу, а я делал на каждый файл, хм, что-то не получилось у меня в первый раз сделать ссылку на папку

её мы делаем командой: mklink /D ?

edit:
всё отлично работает! спасибо!

и всё таки можно как то определить имя текущего пользователя, чтобы подставить его в скрипт?

Iska 30-11-2012 11:26 2035801

Цитата:

Цитата Tosyk
её мы делаем командой: mklink /D ? »

Я же писал выше — у меня не Vista, и не Windows 7. Смотрите сами.

Цитата:

Цитата Tosyk
и всё таки можно как то определить имя текущего пользователя, чтобы подставить его в скрипт? »

Тут Вам «%UserName%» даже не нужен. Берите сразу «%AppData%».

Tosyk 30-11-2012 12:45 2035841

Цитата:

Цитата Iska
Тут Вам «%UserName%» даже не нужен. Берите сразу «%AppData%». »

кстати да, спасибо огромное! буду пробовать


Время: 07:12.

Время: 07:12.
© OSzone.net 2001-