Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Бяда с этими BAT файлами.  (Прочитано 18196 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
optron
Гость
« : 18-05-2006 11:33 » new

Бяда с этими BAT файлами -
Задача на дискете находится программа в arj - архиве. следует выполнить операции:
1. Создать на диске с каталог ну, положим temp000
2. Перекинуть содержимое дискеты в этот каталог
3. Распаковать файлы в том каталоге
4. сделать каталог текущим
5. Запустить программу (ехе-шник)
6. Дождаться выполнения программы и стереть всю директорию.

Так вот, оказывается в ВИН98 и в ВИН ХР различные ВАТ-команды. А как сделать, чтобы ВАТник работал и там и там?
Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 18-05-2006 11:41 » 

Так вот, оказывается в ВИН98 и в ВИН ХР различные ВАТ-команды. А как сделать, чтобы ВАТник работал и там и там?
список команд в студию
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 18-05-2006 11:44 » 

md
copy
arj x
cd
...
del
чего нет?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 18-05-2006 12:22 » 

Цитата: Sla
чего нет?
rd

а для копирования каталогов лучше xcopy (если она есть, ибо отдельная программка, а не команда shell).
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 18-05-2006 13:02 » 

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

Мы все учились понемногу... Чему-нибудь и как-нибудь.
optron
Гость
« Ответ #5 : 18-05-2006 14:14 » 

Да, так то так, только
1) ключи у команд в 98 и ХР - разные
2) start /wait в 98 не ждет окончания процесса и пытается удалить программу до того, как она закончится

вот, короче ВАТник.

set path=c:\test001
cd c:\
mkdir test001
cd a:\
arj e /y prog.arj c:\test001\
chdir /d c:\test001
test.exe
del c:\test001\*.*

в ХР - ноу проблем, в 98 - не работает.
Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 18-05-2006 14:39 » 

Код:
rem set path=c:\test001   не понимаю зачем переназначать путь?
mkdir c:\test001
arj e /y a:prog.arj c:\test001\
chdir /d c:\test001
start /wait test.exe
del c:\test001\*.*
del c:\test001
нет 98 под рукой, но помню хорошо что start /wait или что-то подобное там есть
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 18-05-2006 14:40 » 

Цитата: optron
start /wait
В XP и Server 2003, если управление возвращается в shell не дожидаясь завершения запущенного процесса, я делаю так
Код:
cmd /c <программа>
- помогает. Думаю, что аналогичное поведение у command и в 98.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 18-05-2006 15:28 » 

а у меня
start /w test.exe
- исправно работает на 98 и XP
Записан

optron
Гость
« Ответ #9 : 19-05-2006 04:22 » 

странно, 3 машины обошел. Ну да ладно, а вот интересно можно ли прочитать версию винды в том же ВАТнике и исходя из этого выполнять те или иные команды?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 19-05-2006 04:52 » 

Цитата: optron
можно ли прочитать версию винды в том же ВАТнике и исходя из этого выполнять те или иные команды?
Приведи пример, в каком случае необходимо в BAT-файле знать версию Windows. Если ты про cmd и command, то глобальная переменная COMSPEC ещё начиная с DOS содержит полный путь к текущему интерпретатору команд. Аналогично с системными папками. Что же касается специфичных задач администрирования или сложных скриптов обработки, то для их исполнения BAT-файлы не используются как устаревшие - имеются более новые и мощные средства WSH-скриптов.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
optron
Гость
« Ответ #11 : 19-05-2006 08:32 » 

Вот как отрабатывает Вин98:
mkdir c:\test001
cd a:\
arj e /y prog.arj c:\test001\
c:\test001\
start /wait test.exe
chdir a:\
del c:\test001\*.*
rmdir c:\test001

а задача состоит в том, что за компами сидят очень тупорылые юзеры и разбираться с ОС никто не будет.
Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 19-05-2006 09:15 » 

Вот как отрабатывает Вин98:
mkdir c:\test001
cd a:\
arj e /y prog.arj c:\test001\
c:\test001\
start /wait test.exe
chdir a:\
del c:\test001\*.*
rmdir c:\test001

а задача состоит в том, что за компами сидят очень тупорылые юзеры и разбираться с ОС никто не будет.
это не задача, это проблема
а слабо test.exe засунуть в автозагрузку?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
optron
Гость
« Ответ #13 : 19-05-2006 10:40 » 

Представляешь ситуацию - создается выездная комиссия по тестированию удаленного отдела.
тестовая программа на дискете, но программа большая,(ну не влезает на 3'', поэтому запакована. Программера с собой не берут. Сами тоже распаковать не смогут по причине слабых знаний. Остается одно - распаковывать ВАТ-ником.
« Последнее редактирование: 19-12-2007 19:53 от Алексей1153++ » Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 19-05-2006 14:54 » 

optron, а CD не подойдет?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 19-05-2006 15:14 » 

набери в ХР комманду SET
вывалится список переменных
выбери из них одну, которой точно нет в 98 (например - OS, UserName, UserDomain) - какая тебе больше по душе
далее так:
Код:
if #%OS%#==## then goto Win98
rem батник для WinNT
...
goto EndIf
:Win98
rem батник для Win98
...
:EndIf

Возможно где-то ошибся в синтаксисе - писал по памяти, но смысл думаю понятен
Записан
optron
Гость
« Ответ #16 : 22-05-2006 04:35 » 

Thank's, попробую
« Последнее редактирование: 19-12-2007 19:55 от Алексей1153++ » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines