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

Возможно это не тот случай, но однажды у меня подобное. Однажды файл перестал копироваться. Как оказалось : размер файла превысил максимально допустимый для FAT размер.
...
Рейтинг: 0 / 0
Чудеса в решете, т.е. в bat-файле
    #32873681
Higher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понимаю, максимальный размер файла для FAT-32 - 4Гб. У меня файл около 50 Мб всего. База данных 1С в архиве.
...
Рейтинг: 0 / 0
Чудеса в решете, т.е. в bat-файле
    #32873688
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если поменять команду на
xcopy /d D:\ARCHIV\*.rar \\HIGHER\TechArch\ > c:\log.txt
и потом прочитать сообщение программы?
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Чудеса в решете, т.е. в bat-файле
    #32873715
Higher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОК, попробую. Я просто не знал. А где вообще взять подробную документацию по ДОС-командам? А то я, наверно, еще много, чего не знаю, поскольку всю информацию получаю из /?
...
Рейтинг: 0 / 0
Чудеса в решете, т.е. в bat-файле
    #32875964
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
старт хелп индекс комманд лайн
--
если ты уже догадался что батфайлы (скрипты) это удобно, то могбы по взрослому пользоваться набором утилит юникса.
копируешь ночнойдозор, а про файл 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
Чудеса в решете, т.е. в bat-файле
    #32875965
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
переменные так задаются
Код: 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
Чудеса в решете, т.е. в bat-файле
    #32877247
Higher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Замечательно! То есть, по взрослому - это когда код на две страницы? Нет, я по-детски хочу. Вот весь мой файл, если коменты убрать:
Код: 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
Чудеса в решете, т.е. в bat-файле
    #32877282
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Higher
xcopy /e /h /c /r /y *.* D:\ARCHIV\uncompr\
А рабочий каталог у тебя точно тот, из которого происходит копирование?
...
Рейтинг: 0 / 0
Чудеса в решете, т.е. в bat-файле
    #32877572
Higher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну дык раз он эту строчку выполняет, значит, каталог правильный. К тому же, чтобы на этот счет не заморачиваться, я просто поместил bat-файл прямо в нужный каталог, а планировщик его из-под-оттуда и запускает, так что он копирует все файлы, включая самого себя. Проблема-то не в этой строчке, а в последней. На удаленном компе архив создается правильно, а по сети ко мне сам не прыгает, хотя до Нового Года прыгал исправно и ежедневно.
...
Рейтинг: 0 / 0
Чудеса в решете, т.е. в bat-файле
    #32878291
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я тебе привел пример того языка, про который ты просил.
командный шел под виндовс


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


увеличение кода дает обработка ошибок и параметризация.
дитю понятно, что если xcopy не проработал, то рар вызывать не надо, а надо сообщить об ошибке админу.
...
Рейтинг: 0 / 0
Чудеса в решете, т.е. в bat-файле
    #32878621
Higher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот откуда берутся такие обширные знания? Мне, собственно, рыбка на фикк не нужна, мне бы удочку...
Если конкретно, то кто такой 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
Чудеса в решете, т.е. в bat-файле
    #32878794
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если не можешь читать на английских виндюках
старт хелп индекс комманд лайн
читай на русских
пуск-> подсказка-> индекс-> командная строчка
(за точность названий кнопок и закладок я не ручаюсь)
кстати
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
Чудеса в решете, т.е. в bat-файле
    #32878795
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
текст сообщений, к примеру
на метке m2
echo Invalid parameters on command line,
естественно не имеет отношения к твоему xcopy.exe
это то что значит код 2 в случае сайбезовского dbbackup.exe.
...
Рейтинг: 0 / 0
Чудеса в решете, т.е. в bat-файле
    #32878796
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин на метке м255.
...
Рейтинг: 0 / 0
Чудеса в решете, т.е. в bat-файле
    #32878815
Higher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Чудеса в решете, т.е. в bat-файле
    #32878817
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>"xcopy бла-бла-бла >> C:\file.txt"
>Так что мне echo бесполезно, я его не увижу.

echo блаблабла >> c:\file.txt?
...
Рейтинг: 0 / 0
Чудеса в решете, т.е. в bat-файле
    #32878818
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Чудеса в решете, т.е. в bat-файле
    #32878820
Higher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, вот, чего мне надо было:
Код: plaintext
1.
2.
xcopy /d D:\ARCHIV\*.rar \\HIGHER\TechArch\
echo %errorlevel% >> D:\ARCHIV\file.txt
Завтра на работу приду, попробую, посмотрю, что за ошибка вылазит. Вот если бы на форум не зашел, хрен бы догадался этот ерорлевел в проценты заключить.
...
Рейтинг: 0 / 0
Чудеса в решете, т.е. в bat-файле
    #32881110
Higher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче, подправил я всю эту хню так:
Код: 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
25 сообщений из 36, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Чудеса в решете, т.е. в bat-файле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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