1 (изменено: ihoming, 2015-11-13 08:56:40)

Тема: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Здравствуйте, профессионалы! Очень нужна ваша помощь в написании батника. Искал решение в сети, не нашёл. А сам написать не могу, так как полный профан в этом деле. Являюсь на добровольной основе админом бесплатного сервера игры Call of Duty MW3 (от TeknoMW3). Игроки часто обращаются с просьбой восстановить их статистику в игре, что я сделать не могу, так как эти данные находятся у игрока на компьютере. Логичнее было бы им предложить копировать свои данные у себя на компьютере на другом диске. Но по разным причинам они это не делают.
   
И так, к просьбе. Нужен батник, который будет запущен на компьютере пользователя, который будет предлагать пользователю сохранить папку dw со своей статистикой на сервере игры (кнопка "да" и кнопка "нет"). При активации кнопки "да", папка dw (в которой находится файл статистики с расширением .stats) из директории \Call of Duty Modern Warfare 3\ (имя диска неизвестно) архивировалась бы и попадала на сервер 172.22.100.101 в папку MW3 и имела бы в названии данного архива IP-адрес данного пользователя (чтобы мне было проще найти эти данные и передать пользователю). А чтобы не плодить эти архивы старые данные по данному пользователю перезаписывались бы на новые.
   
Такое возможно? Или это уже курсовая по программированию? Большое спасибо за участие! Ваш ресурс уникальный.

2

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

ihoming
Почему именно батник, раз речь про окна с кнопками?
И вот эти моменты неясны:

ihoming пишет:

будет запущен на компьютере пользователя

В какой момент запущен?

ihoming пишет:

\Call of Duty Modern Warfare 3\ (имя диска неизвестно)
архивировалась бы и попадала на сервер 172.22.100.101 в папку MW3

Полные UNC-пути у этого всего имеются?

ihoming пишет:

А чтобы не плодить эти архивы старые данные по данному пользователю перезаписывались бы на новые.

Т.е. тупо заменять файл .stats?

3 (изменено: ihoming, 2015-11-13 09:24:56)

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Почему именно батник, раз речь про окна с кнопками?
И вот эти моменты неясны:

1. Выбор батника был непреднамеренным. Я не специалист в этом вопросе. Находил в сети решение похожих вопросов.

В какой момент запущен?

2. Данный батник будет скомпилирован в ехе файл и запущен будет по выходу из игры. У меня есть два способа (активен будет файл статистики или не активен).

Полные UNC-пути у этого всего имеются?

У пользователя путь будет такой:
Любой из дисков:\Call of Duty Modern Warfare 3\dw\00001100153893.stats  (00001100153893.stats - это пример файла статистики, у каждого он будет разный)

Сервер:
G:\MW3\dw

Т.е. тупо заменять файл .stats?

3. Так точно!

4 (изменено: Flasher, 2015-11-13 09:58:24)

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

ihoming пишет:

запущен будет по выходу из игры

Кем или чем? И каким образом?

ihoming пишет:

У меня есть два способа (активен будет файл статистики или не активен).

Два способа чего? Запуска?

ihoming пишет:

Любой из дисков

Сценарий будет лежать в папке программы? Или предлагается по запущенному процессу узнавать расположение?

ihoming пишет:

00001100153893.stats

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

ihoming пишет:

G:\MW3\dw

Т.е., например, "G:\MW3\dw\172.22.100.05.zip"?

Пользуйтесь выделением и ссылкой "Цитировать".

5 (изменено: ihoming, 2015-11-13 10:00:40)

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Кем или чем? И каким образом?
4. При выходе из игры закрываются мои приложения (закрытие окна лаунчера игры, самодельного античита и другое). Приложения закрываются ехе-файлом (close_app.exe), который был скомпилирован из батника и активируется сриптом ahk (весь процесс продуман и работает, но к моей просьбе не имеет значения).
Могу в батник (close_app.exe) вставить строку, которая запустит новый батник по архивированию статистики игрока.

Батник (close_app.exe) находится у пользователя в корневой папке игры в директории:
Любой из дисков:\Call of Duty Modern Warfare 3\

Базовое имя всегда будет одно и то же? или оно присваивается с каждым запуском?

5. Будет постоянным!

Т.е., например, "G:\MW3\dw\172.22.100.05.zip"?

6. Так точно!

6 (изменено: Flasher, 2015-11-14 12:43:50)

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Попробуйте такой vbs (компилятор):

' Условие - положить скрипт на диск с игрой

' исходный каталог хранения stats-файла:
IPath = "\Call of Duty Modern Warfare 3\dw\"
' каталог-получатель его резервной копии:
OPath = "G:\MW3\dw\" 

Set Shell = CreateObject("Shell.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
IPath = FSO.GetDriveName(WScript.ScriptFullName) & IPath
With Shell.NameSpace(IPath).Items
  .Filter 9408, "*.stats" : Count = .Count
  If Count Then Stats = .Item(0).Path
End With
If Count Then
  Title = " Создание резерва статистики для Call of Duty MW3     "
  If MsgBox("Зарезервировать текущую статистику на сервере?", 4132, Title) = 6 Then
    H = "HKLM\SYSTEM\CurrentControlSet\services\"
    Hive1 = H & "RemoteAccess\Interfaces\"
    Hive2 = H & "Tcpip\Parameters\Interfaces\"
    For i = 2 To 10
      N = Hive1 & i & "\"
      With CreateObject("WScript.Shell")
        On Error Resume Next
        .RegRead(N) : IP = .RegRead(Hive2 &_
        .RegRead(N & "InterfaceName") & "\IPAddress")(0)
        If Err.Number = 0 Then Exit For
      End With : On Error Goto 0
    Next : Arch = OPath & IP & ".zip"
    FSO.CreateTextFile(Arch, True).Close
    Shell.NameSpace(Arch).CopyHere Stats, 20
    MsgBox "Статистика зарезервирована!", 4164, Title
  End If
End If

7

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Вот это оперативность! Очень благодарен за Вашу помощь. Не успел ещё приехать домой с работы и опробовать. Однако меня смущает в коде отсутствие IP сервера где будет храниться копия файлов статистики. А именно, 172.22.100.101.
Может включить адрес в строку: Arch = "G:\MW3\dw\" & IP & ".zip"?

8

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Дык:

ihoming пишет:

Сервер:
G:\MW3\dw

9

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Flasher пишет:

Дык:

ihoming пишет:

Сервер:
G:\MW3\dw

Виноват. Выше писал, подумал, что второй раз писать нет надобности. Нет мне оправданья..  ☺

10

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Я запутан. Какой из этого вывод? Всё пока остаётся, как есть?

11 (изменено: ihoming, 2015-11-13 15:30:43)

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Flasher пишет:

Я запутан. Какой из этого вывод? Всё пока остаётся, как есть?

Я прошу прощение за назойливость, но, я как ламер, понимаю, что копия статистики будет создана на компьютере пользователя в директории G:\MW3\dw. А мне нужно, чтобы копия статистики была создана на сервере (172.22.100.101)  G:\MW3\dw.
А как правильно будет выглядить с IP адресом?

12

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Flasher пишет:

Я запутан. Какой из этого вывод? Всё пока остаётся, как есть?

Я прошу прощение за назойливость, но, я как ламер, понимаю, что копия статистике будет создана на компьютере пользователя в директории G:\MW3\dw. А мне нужно, чтобы копия статистики была создана на сервере (172.22.100.101) G:\MW3\dw LAN сети.
А как правильно будет выглядить батник с вышеуказанным IP адресом?

13

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Т.е. диск G: - это не сетевой диск (сервера) на разных машинах?
А как выглядит UNC-путь к нему с клиентских машин?

14

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Flasher пишет:

Т.е. диск G: - это не сетевой диск (сервера) на разных машинах?
А как выглядит UNC-путь к нему с клиентских машин?

Диск G: - это диск серверной машины. Батник опробовал. У меня на компьютере тоже есть одноимённый диск.
Результат. Батник не запрашивает архивировать файл статистики. Ни на моём компьютере, не на сервере (172.22.100.101) архив не сохраняется.

15

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Flasher пишет:

Попробуйте такой vbs

16

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

ihoming
Вскрылся один косячок с занятостью Items. Исправил скрипт.

17

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Добрый день. Вчера не обратил внимание, что это код vbs. Виноват. Сегодняшний код выдаёт ошибку:

Строка 9
Символ 1
Ошибка: Требуется объект: 'Shell.NameSpace(...)'
Код: 800A01A8
Источник: Ошибка выполнения Microsoft VBSript

18 (изменено: Flasher, 2015-11-14 12:44:28)

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Ooops. Пардон. Не проверил. Готово.
Add: Точнее теперь готово.

19

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Проверил, снова ошибку выдаёт.

Строка 31
Символ 9
Ошибка: Предполагается наличие 'if'
Код: 800A03F4
Источник: Ошибка компиляции Microsoft VBSсript

20

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Очевидно, что код был скопирован до появления дописки.

21

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Попробую ещё раз.

22 (изменено: ihoming, 2015-11-14 13:22:16)

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Проверил, снова ошибку выдаёт.

Строка 30
Символ 5
Ошибка: Путь не найден
Код: 800A004С
Источник: Ошибка выполнения Microsoft VBSсript

23 (изменено: Flasher, 2015-11-14 14:27:13)

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

А права на создание или копирование файлов в эту папку есть?
Что если заменить 30 строку на?:

    CreateObject("WScript.Shell").Run "cmd /c del /f /q " &_
    Arch & "&&fsutil file createnew " & Arch & " 0", 0, True

24

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Flasher пишет:

А права на создание или копирование файлов в эту папку есть?
Что если заменить 30 строку на?:

    CreateObject("WScript.Shell").Run "cmd /c del /f /q " &_
    File & "&&fsutil file createnew " & File & " 0", 0, True

Заменил строку 30.
От 30 строки и до самого конца скрипта:


    CreateObject("WScript.Shell").Run "cmd /c del /f /q " &_
    File & "&&fsutil file createnew " & File & " 0", 0, True
    Shell.NameSpace(Arch).CopyHere Stats, 20
    MsgBox "Статистика зарезервирована!", 4164, Title
  End If
End If

25

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Проверил, снова ошибку выдаёт.

Строка 32
Символ 5
Ошибка: Требуется объект: 'Shell.NameSpace(...)'
Код: 800A01A8
Источник: Ошибка выполнения Microsoft VBSсript

26 (изменено: Flasher, 2015-11-14 14:45:04)

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

ihoming
Не цитируйте предыдущий пост. Вставка верная.
Кое-что в предыдущем посте поправил (Arch вместо File). И ответа на вопрос жду.

27

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

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

28

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Т.е. на создание? Я думал, что она уже была давно создана и расшарена. Ведь пользователи должны оттуда забирать файл статистики для восстановления. Или речь про создание в ней файлов?

29

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

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

30

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

А если скрипт с админискими правами запускать через runas, например?

31

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Если бы я знал, что это такое.

32

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

В комплексе с sanur будет правильней.

33

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

Здравствуйте, Flasher.
Дали мне наши админы папку для архивирования файлов статистики с правами на создание и управление. Адрес изменился, вместо серверной машины G:\MW3\dw (с адресом 172.22.100.101) дали мне такой адрес: http://poligon.lan/CopyStats/, где "CopyStats" - папка для файлов статистики.
Опробовал Ваш скрипт с этим адресом, таблички все отрабатывают ("Зарезервировать текущую статистику на сервере?" и "Статистика зарезервирована!"), но архивов статистики в данной папке нет. Там, вообще, ничего нет.

34

Re: CMD/BAT: Подтверждение пользователем копирования файла на сервер

ihoming пишет:

вместо серверной машины ... дали мне ... http://

+

ihoming пишет:

но архивов статистики в данной папке нет

А вы как хотели? Протокол HTTP тут ни к селу ни к городу.