Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Чудеса в решете, т.е. в bat-файле / 25 сообщений из 36, страница 1 из 2
20.01.2005, 06:47
    #32873592
Higher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
Короче, утомлять сильно попытаюсь не.
Имеется на одном из сетевых компов bat-файл, который по расписанию ежедневно выполняет резервное копирование. Он сначала делает копию базы данных, потом архивирует ее RAR-ом, указывая название файла [YYMMDD].rar, а потом, по идее, должен по сети сопировать полученный архив на мой компьютер. Для этого в нем в конце прописана строчка:
Код: plaintext
1.
xcopy /d D:\ARCHIV\*.rar \\HIGHER\TechArch\
Фишка в том, что эта строчка исправно работала до 31.12.04 включительно. Теперь все команды исправно выполняются, кроме вот этого самого копирования. Что за чудеса? Это что, неизведанная проблема 2005 года?
Для справки: параметр /d означает, что копироваться должны файлы, которые "новее в исходной папке".
...
Рейтинг: 0 / 0
20.01.2005, 06:53
    #32873594
s79
s79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
Посмотри на системные даты компьютеров
...
Рейтинг: 0 / 0
20.01.2005, 06:54
    #32873595
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
тоже самое делаю утилитой cp.exe от GNU
вчера она копировала
...
Рейтинг: 0 / 0
20.01.2005, 06:58
    #32873600
Higher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
s79Посмотри на системные даты компьютеров
Это я, конечно, посмотрю, я тоже, пока писал, об этом уже подумал. Только если бы на "удаленном" компе была неправильная системная дата, то RAR называл бы файл неправильно. А он его правильно называет.
...
Рейтинг: 0 / 0
20.01.2005, 06:59
    #32873602
Higher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
tchingizтоже самое делаю утилитой cp.exe от GNU
вчера она копировала
Ну мне теперь для каждой хни отдельную утилиту что ли ставить, к тому же, на чужой комп?
...
Рейтинг: 0 / 0
20.01.2005, 07:03
    #32873607
Higher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
Сорри, не объяснил почему bat удобнее, как-то грубовато получилось. Так вот, в bat я в любой момент могу прописать все, что угодно, вплоть до перезагрузки или скачивания из и-нета "Ночного дозора", и мне за это ничего не будет, так как "владелец" ip думает, что эта хрень выполняет резервное копирование:) (шутка, в смысле).
...
Рейтинг: 0 / 0
20.01.2005, 08:35
    #32873670
X
X
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
xcopy /d D:\ARCHIV\*.rar \\HIGHER\TechArch\

Возможно это не тот случай, но однажды у меня подобное. Однажды файл перестал копироваться. Как оказалось : размер файла превысил максимально допустимый для FAT размер.
...
Рейтинг: 0 / 0
20.01.2005, 08:45
    #32873681
Higher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
Насколько я понимаю, максимальный размер файла для FAT-32 - 4Гб. У меня файл около 50 Мб всего. База данных 1С в архиве.
...
Рейтинг: 0 / 0
20.01.2005, 08:52
    #32873688
Yanis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
А если поменять команду на
xcopy /d D:\ARCHIV\*.rar \\HIGHER\TechArch\ > c:\log.txt
и потом прочитать сообщение программы?
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
20.01.2005, 09:10
    #32873715
Higher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
ОК, попробую. Я просто не знал. А где вообще взять подробную документацию по ДОС-командам? А то я, наверно, еще много, чего не знаю, поскольку всю информацию получаю из /?
...
Рейтинг: 0 / 0
21.01.2005, 00:58
    #32875964
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
старт хелп индекс комманд лайн
--
если ты уже догадался что батфайлы (скрипты) это удобно, то могбы по взрослому пользоваться набором утилит юникса.
копируешь ночнойдозор, а про файл cp.exe размером в 73728 байт переживаешь

перед копированием неплохо проверить базу
после обращение к каждому екзешнику проверить код ошибки
сложить результаты в какойто файл как Янис сказал
и послать этот файл по почте себе и/или через net send тоже себе

вот типа проверка ошибок


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
rem
rem   to backup the mlc database in success case
rem          parameters
rem                                                         report file
rem
rem 

%sybDir%\win32\dbbackup -y -c "uid=bckdmn;pwd=bckdmn;eng=%1;dbn=%2;Links=tcp" -o %bckDir%/emergency.rpt  %bckDir%/emergency

if errorlevel  255  goto m255
if errorlevel  254  goto m254
if errorlevel  11   goto m11
if errorlevel  10   goto m10
if errorlevel  9    goto m9
if errorlevel  8    goto m8
if errorlevel  7    goto m7
if errorlevel  6    goto m6
if errorlevel  5    goto m5
if errorlevel  4    goto m4
if errorlevel  3    goto m3
if errorlevel  2    goto m2
if errorlevel  1    goto m1
echo  SUCCESS                             >>%bckDir%\message.
.

goto m_good
:m255
echo  Invalid parameters on command line  >>%bckDir%\message.
goto message
:m254
echo  Reached stop time                   >>%bckDir%\message.
goto message
:m11
echo  Database server not found           >>%bckDir%\message.
goto message
:m10
echo  Database engine not running         >>%bckDir%\message.
goto message
:m9
echo Unable to connect to database engine >>%bckDir%\message.
goto message
:m8
echo Client/server protocol mismatch      >>%bckDir%\message.
goto message
:m7
echo Missing required database name       >>%bckDir%\message.
goto message
:m6
echo Failed communications                >>%bckDir%\message.
goto message
:m5
echo Terminated by user                   >>%bckDir%\message.
goto message
:m4
echo Out of memory                        >>%bckDir%\message.
goto message
:m3
echo File not found, unable to open, and so on    >>%bckDir%\message.
goto message
:m2
echo Invalid file format, and so on       >>%bckDir%\message.
goto message
:m1
echo General failure                      >>%bckDir%\message.
goto message


:m_good




вывод в файл %bckDir%/emergency.rpt, и %bckDir%\message.


вот посылка мыла и сообщения по сети


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
:message

rem
rem        xmail - it is tools to send e-mail.
rem        SMTP-server
rem                       FROM
rem                                  TO 
rem                                         SUBJECT
rem
rem                                                       body of
rem                                                       message
rem
rem   do a success message?
rem
rem pause
rem echo on

%utDir%\xmail  -h %smtpSrv% -f %bckDmnEMl% -t %bckDmnEMl% -s "MMB %lclNm% ERROR ver %4 database %1(%2)" <% 3 \message. >>% 3 \history.log

rem
rem    send message alert by LAN
rem      LAN users of MMB
rem
net send %usrAlert% "MMB %lclNm% ERROR ver %4 database %1(%2)" >>% 3 \history.log


...
Рейтинг: 0 / 0
21.01.2005, 01:00
    #32875965
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
переменные так задаются
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
rem
rem this file includes all the variables should to be used for 
rem        installation, backup and maitenance MMB server
rem

rem
rem  parameters of sybase
rem

set sybVer= 9 
set sybDir=c:\bin\syb

rem
rem  identification of backup server   (local)
rem

set lclNm=Bavarian
set lclEng=test_db
set lclDb=test_db

вызов другого батника.

call _setv.bat
...
Рейтинг: 0 / 0
21.01.2005, 14:04
    #32877247
Higher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
Замечательно! То есть, по взрослому - это когда код на две страницы? Нет, я по-детски хочу. Вот весь мой файл, если коменты убрать:
Код: plaintext
1.
2.
3.
4.
5.
6.
echo Run program test.bat with parameter % 1 
echo end Batch file
del /s /q D:\ARCHIV\uncompr\*.*
xcopy /e /h /c /r /y *.* D:\ARCHIV\uncompr\
rar a -r -ag[YYMMDD] D:\ARCHIV\ D:\ARCHIV\uncompr\*.*
xcopy /d D:\ARCHIV\*.rar \\HIGHER\TechArch\
И все работает. Главное - дитю понятно, и никаких exe не надо вставлять. А то, что ты привел, я не очень понял, что это такое, на каком языке и зачем оно надо.
...
Рейтинг: 0 / 0
21.01.2005, 14:16
    #32877282
Yanis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
Higher
xcopy /e /h /c /r /y *.* D:\ARCHIV\uncompr\
А рабочий каталог у тебя точно тот, из которого происходит копирование?
...
Рейтинг: 0 / 0
21.01.2005, 15:35
    #32877572
Higher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
Ну дык раз он эту строчку выполняет, значит, каталог правильный. К тому же, чтобы на этот счет не заморачиваться, я просто поместил bat-файл прямо в нужный каталог, а планировщик его из-под-оттуда и запускает, так что он копирует все файлы, включая самого себя. Проблема-то не в этой строчке, а в последней. На удаленном компе архив создается правильно, а по сети ко мне сам не прыгает, хотя до Нового Года прыгал исправно и ежедневно.
...
Рейтинг: 0 / 0
22.01.2005, 00:59
    #32878291
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
я тебе привел пример того языка, про который ты просил.
командный шел под виндовс


>подробную документацию по ДОС-командам


увеличение кода дает обработка ошибок и параметризация.
дитю понятно, что если xcopy не проработал, то рар вызывать не надо, а надо сообщить об ошибке админу.
...
Рейтинг: 0 / 0
22.01.2005, 18:11
    #32878621
Higher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
А вот откуда берутся такие обширные знания? Мне, собственно, рыбка на фикк не нужна, мне бы удочку...
Если конкретно, то кто такой dbbackup, к примеру, и что за параметры? Дальше - вот это непонятно: "MMB %lclNm% ERROR ver %4 database %1(%2)" >>%3\history.log". То есть, вообще непонятно, я нигде еще внятно не читал, для чего эти % используются, понятно, что для передачи параметров, но каким конкретно образом - темный лес. И еще меня в школе учили, что закомментированные строки интерпретатор игнорирует. И хотя я где-то слышал, что в HTML коменты могут использоваться, как тело скрипта (даже сам пару страничек наклепал с этими ХРенями), но вот про дос-шелл такого нигде не слышал. И еще у меня с английским XEPOBO. (I have a litle trouble with pronounciation and residents of South Welles can't take me as simple in consequense of it :)
...
Рейтинг: 0 / 0
23.01.2005, 06:38
    #32878794
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
если не можешь читать на английских виндюках
старт хелп индекс комманд лайн
читай на русских
пуск-> подсказка-> индекс-> командная строчка
(за точность названий кнопок и закладок я не ручаюсь)
кстати
rar и rar.exe это синонимы. написав rar ты вставил в скрипт вызов exe файла rar.exe.

dbbackup - тебе нафиг не надо, это утилита из сайбеза.
там написано, что пользователь bckdmn с паролем bckdmn копирует бекапит
файл базы данных с именем в переменной %2 с сервера с именем переменной %1,
по сетевому протоколу tcp в директорию %bckDir%/emergency,
а отчет о работе записывает в лог файл -o %bckDir%/emergency.rpt.

%1 %2 --- переменные принимают значения из командной строчки запуска скрипта

имя_скрипта.bat имя_sql-сервера имя_базыданных_на_сервере
вроде
rglr_bck.bat prod_eng test_db

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
xcopy бла бла бла

if errorlevel  255  goto m255
if errorlevel  2    goto m2
if errorlevel  1    goto m1
echo  SUCCESS                             >>%bckDir%\message.
.

goto m_good

:m255
echo  Invalid parameters on command line  >>%bckDir%\message.
goto message

:m2
echo Invalid file format, and so on       >>%bckDir%\message.
goto message

:m1
echo General failure                      >>%bckDir%\message.
goto message


:m_good


надо узнать код ошибки и искать ее в хелпах. а не гадать на гуще в форуме.

%bckDir% - переменная содержит имя директории для бекапа.
задается
set bckDir=c:\db_save

пысы

про переход на метки оператором goto мне лень писать.

пыпысы
если занялся программированием, то твой английский - это твои уэльские проблемы
...
Рейтинг: 0 / 0
23.01.2005, 06:41
    #32878795
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
текст сообщений, к примеру
на метке m2
echo Invalid parameters on command line,
естественно не имеет отношения к твоему xcopy.exe
это то что значит код 2 в случае сайбезовского dbbackup.exe.
...
Рейтинг: 0 / 0
23.01.2005, 06:42
    #32878796
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
блин на метке м255.
...
Рейтинг: 0 / 0
23.01.2005, 10:15
    #32878815
Higher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
Pro scribo: ну нельзя же так буквально все понимать! Поимейте чувство юмора. Если я Уэльс с ошибкой написал, это еще не значит, что я английского не знаю, у нас полстраны пишет "мне это очИнь нравитЬся", это же не значит, что у них с русским большие проблемы. Ну не программист я, хотя программирую уже лет 10 на всяких бейсиках и 1С-ах, по работе приходится.

А теперь само сообщение: а нафига мне прописывать после каждого варианта описание ошибки, не проще ли сам код ошибки в файл вывести, причем не задавая его переменной, а прямо в строке написать "xcopy бла-бла-бла >> C:\file.txt" Я вот только не уверен, что он выдаст то, что нужно, как бы его заставить именно errorlevel туда записать. Сколько справку микрософтовскую не юзай, того, что нужно, все равно не найдешь, хотя информации там море, но каша полная, а еще она периодически на свой сайт кидает, где по поиску "errorlevel cmd" выдаются ссылки на пол-интернета. Так и не нашел коды ошибок. "Дополнительные сведения о кодах завершения см. в разделе Пакеты Microsoft Windows Resource Kits .", а эта ссыла выкидывает в и-нет, где черт ногу сломит.

У меня главная проблема в том, что доступа к тому компу нет, там просто в планировщике есть ежедневный запуск batника из-под Админа, вот к этому каталогу, где батник, у меня доступ только есть:) Так что мне echo бесполезно, я его не увижу. И с мессагой не хочу экспериментировать, я не знаю, что за процессы на том компе запущены и кто такой этот MMB (Полнотекстовый поиск возвращено 0 результатов поиска для MMB), а проверить отсылку мессаги можно только один раз в день.

P.S.: "Pro scribo" означает "Перед еще ненаписанным".
...
Рейтинг: 0 / 0
23.01.2005, 10:20
    #32878817
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
>"xcopy бла-бла-бла >> C:\file.txt"
>Так что мне echo бесполезно, я его не увижу.

echo блаблабла >> c:\file.txt?
...
Рейтинг: 0 / 0
23.01.2005, 10:23
    #32878818
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
http://www.google.com/search?hl=ru&q=windows+errorlevel+xcopy&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=

http://www.geocities.com/~budallen/xcopy.html
...
Рейтинг: 0 / 0
23.01.2005, 10:39
    #32878820
Higher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
Короче, вот, чего мне надо было:
Код: plaintext
1.
2.
xcopy /d D:\ARCHIV\*.rar \\HIGHER\TechArch\
echo %errorlevel% >> D:\ARCHIV\file.txt
Завтра на работу приду, попробую, посмотрю, что за ошибка вылазит. Вот если бы на форум не зашел, хрен бы догадался этот ерорлевел в проценты заключить.
...
Рейтинг: 0 / 0
24.01.2005, 19:30
    #32881110
Higher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чудеса в решете, т.е. в bat-файле
Короче, подправил я всю эту хню так:
Код: plaintext
1.
2.
3.
4.
5.
xcopy /d D:\ARCHIV\*.rar \\Higher\TechArch\
set cod=%errorlevel%
echo @ >> D:\ARCHIV\log.txt
echo Архивация выполнена  %DATE% в %TIME%. >> D:\ARCHIV\log.txt
echo Код возврата после копирования файлов: %cod% >> D:\ARCHIV\log.txt
net send Higher ЂаеЁў жЁп ўлЇ®«­Ґ­ . Љ®¤ ®иЁЎЄЁ: %cod%
Результат: файл log.txt не создан, сообщение не отправлено, полная байда. Пошел к удаленному компу, запустил файл вручную. После выполнения архивации на команде xcopy выдает запрос на перезапись. Все понятно. Добавил параметр /y. Завтра посмотрю результат. Но вопрос все равно остается: почему раньше копировало, а теперь перестало?
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Чудеса в решете, т.е. в bat-файле / 25 сообщений из 36, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]