Автор Тема: Пакетный файл *.bat  (Прочитано 4441 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Silver_Shadow

  • Пользователь
  • Сообщений: 2767
  • Пол: Мужской
  • Ниндзя-гопник
    • Steam
    • Youtube
    • Просмотр профиля
Пакетный файл *.bat
« : 17 Апрель 2009, 20:17:32 »
При создании некого пакетного файла для дос (допустим c.bat) столкнулся с задачей

это все суется на загрузучную дискету ДОС, и запускается с boot, т.е. загрузка вместе с компьютером

мои действия такие:
1 создаю загрузочную дискето MS DOS средтсвами windows
cую туда
Autoexec.bat

Код:

if "%config%" = = "mx" goto max
if "%config%" = = "mn" goto min
:max
SET PATH = C:\WINDOWS;A:\VC
mode con codepage prepare = ((866) A:\ega3.cpi)
mode con codepage select = 866
keyb ru,,A:\keybrd3.sys
goto end
:min
set path = C:\WINDOWS;A:\VC
:end
Config.sys


Код:

[menu]
menuitem = mx, max configuration
menuitem = mn, min configuration
[mx]
device = A:\himem.sys
dos = high,umb
device = A:\display.sys con=(ega,,1)
Country = 007,866,C:\country.sys
[mn]
device = C:\himem.sys
dos = high,umb


И дополнительно надо строчку добавить в Autoexec о вызове еще одного bat с задачей

Вывод на экран всех выполняемых команд.
Вывод на экран наличие в каталогах диска a: упакованных файлов расширения .rar, с подтверждением на вывод.


Наверно во первых для выбора надо исп команду choice далее какой то фильтр для того чтобы выводились только запакованых файлов.

Проверить, задано ли при вызове командного файла C_8.bat в качестве параметра имя проверяемого файла, если нет, то вывести соответствующее сообщение в файл TYP8 текущего диска. Если проверяемый файл имеется на диске a:, то скопировать его в новый каталог диска а:.
Приостановить выполнение командного файла C_8.bat с выводом сообщения об этом на экран.


Тут как я понял надо проверить есть ли на дискете файл, если нет то надо ввести в файл сообщение, если есть то скопировать куда нить. Вот никто незнает команду проверки?

Кто нить работал с батниками? Может кто что подсказать?

Оффлайн Fly

  • Пользователь
  • Сообщений: 1896
  • Пол: Мужской
    • Steam
    • Youtube
    • Просмотр профиля
Re: Пакетный файл *.bat
« Ответ #1 : 17 Апрель 2009, 20:56:46 »
Цитата: Silver_Shadow
Наверно во первых для выбора надо исп команду choice далее какой то фильтр для того чтобы выводились только запакованых файлов.
Для выбора да, использовать choice. А для вывода файлов *.rar во всех каталогах диска A: команда dir /s a:\*.rar
Примерно так:
choice /C YN /M "Подтверждаете вывод"
if errorlevel 2 dir /s a:\*.rar
Цитата: Silver_Shadow
Тут как я понял надо проверить есть ли на дискете файл, если нет то надо ввести в файл сообщение, если есть то скопировать куда нить. Вот никто незнает команду проверки?
if exist <имя файла>

Оффлайн Silver_Shadow

  • Пользователь
  • Сообщений: 2767
  • Пол: Мужской
  • Ниндзя-гопник
    • Steam
    • Youtube
    • Просмотр профиля
Re: Пакетный файл *.bat
« Ответ #2 : 17 Апрель 2009, 21:15:15 »
Цитата
Для выбора да, использовать choice. А для вывода файлов *.rar во всех каталогах диска A: команда dir /s a:\*.rar
Точно! забыл про звездочку точка расширение, спасибо ща попробую

Оффлайн Silver_Shadow

  • Пользователь
  • Сообщений: 2767
  • Пол: Мужской
  • Ниндзя-гопник
    • Steam
    • Youtube
    • Просмотр профиля
Re: Пакетный файл *.bat
« Ответ #3 : 28 Май 2009, 23:20:17 »
Еще одна проблема возникла

Цитата
Проверить, задано ли при вызове командного файла C_8.bat в качестве параметра имя проверяемого файла, если нет, то вывести соответствующее сообщение в файл TYP8 текущего диска


Вообщем проблема одна, есть ли команда в ДОС, записывающая текст в файл? ....

Оффлайн Fly

  • Пользователь
  • Сообщений: 1896
  • Пол: Мужской
    • Steam
    • Youtube
    • Просмотр профиля
Re: Пакетный файл *.bat
« Ответ #4 : 29 Май 2009, 21:08:13 »
Можно так
echo нужный_текст > имя_файла

Оффлайн Silver_Shadow

  • Пользователь
  • Сообщений: 2767
  • Пол: Мужской
  • Ниндзя-гопник
    • Steam
    • Youtube
    • Просмотр профиля
Re: Пакетный файл *.bat
« Ответ #5 : 29 Май 2009, 22:53:02 »
Fly,
додумался уже -) но все равно спасиб
хотя в самом echo в описании почему то это не описывается

Оффлайн Silver_Shadow

  • Пользователь
  • Сообщений: 2767
  • Пол: Мужской
  • Ниндзя-гопник
    • Steam
    • Youtube
    • Просмотр профиля
Re: Пакетный файл *.bat
« Ответ #6 : 30 Май 2009, 20:34:52 »
Сегодня сдавал на проверку преподу, оказалась одна ошибка

В задание сказано что
-
Проверить, задано ли при вызове командного файла C_8.bat в качестве параметра имя проверяемого файла, если нет, то вывести соответствующее сообщение в файл TYP8 текущего диска.
-
Так вот это не учел
Я вот никак не пойму как сделать проверку имено задания файла с параметром проверяемого файла.
То есть сначала идет Autoexec bat в нем вызов с.bat.
Так я должен уже в код c.bat сделать проверку, - а не задано ли при вызове c.bat 1.txt(это проверяемый файл)?
Т.е. если не задано в Autoexec.bat строка c.bat /1.txt то
Цитата
вывести соответствующее сообщение в файл TYP8 текущего диска
Вот,
Каким образом это запмсать? никто не подскажет?

Оффлайн Fly

  • Пользователь
  • Сообщений: 1896
  • Пол: Мужской
    • Steam
    • Youtube
    • Просмотр профиля
Re: Пакетный файл *.bat
« Ответ #7 : 31 Май 2009, 00:21:33 »
Это в c_8.bat писать надо. Например, так:
if not -%1 == -1.txt echo нужный_текст > TYP8

Добавлено позже:
Цитата: Silver_Shadow
вывести соответствующее сообщение в файл TYP8 текущего диска
Вот только не понял, что значит "текущего диска". Имеется ввиду корневая папка?

Оффлайн Silver_Shadow

  • Пользователь
  • Сообщений: 2767
  • Пол: Мужской
  • Ниндзя-гопник
    • Steam
    • Youtube
    • Просмотр профиля
Re: Пакетный файл *.bat
« Ответ #8 : 31 Май 2009, 18:16:14 »
Это в c_8.bat писать надо. Например, так:
if not -%1 == -1.txt echo нужный_текст > TYP8

Добавлено позже:
Вот только не понял, что значит "текущего диска". Имеется ввиду корневая папка?
Ну вообше все это запускается с флопи-дискеты. Для начала форматируем в MS-DOS format
заменям config sys и autoexec

config

[menu]
menuitem = mx, max configuration
menuitem = mn, min configuration
[mx]
device = A:\himem.sys
dos = high,umb
device = A:\display.sys con=(ega,,1)
Country = 007,866,C:\country.sys
[mn]
device = A:\himem.sys
dos = high,umb


Autoexec

echo off
if "%config%" == "mx" goto max
if "%config%" == "mn" goto min
:max
SET PATH = C:\WINDOWS;A:\VC
mode con codepage prepare = ((866) A:\ega3.cpi)
mode con codepage select = 866
keyb ru,,A:\keybrd3.sys
a:\c.bat
goto end
:min
echo minimal configuration is disabled, please call techguide
pause
set path = C:\WINDOWS;A:\VC
:end


т.е меню появляется после загрузки компьютера
выбирает в меню пункт "max"
оно по идее запуска c.bat (у меня называется имено так, а с8.bat это в методичке так написано, я решил просто 8 убрать.
А текущий диск это дискета

вот c.bat

echo off
cls
choice /C:YN /N "Look about *.rar files?"
if errorlevel 2 goto b
if errorlevel 1 goto a

:a
dir /s a:\*.rar
goto c

:b
echo Don't want, not need

:c
if exist a:\1.txt md a:\ZZ
copy a:\1.txt a:\ZZ
if not exist a:\1.txt echo file not exist > a:\3.txt
goto t
:t
type a:\3.txt
echo Now that's closed
pause


А TYP8 у меня это 3.txt
Проверяемый файл 1.txt

А как указавать параметр в autoexec.bat для с.bat?
просто написать c.bat /1.txt ?


Оффлайн Fly

  • Пользователь
  • Сообщений: 1896
  • Пол: Мужской
    • Steam
    • Youtube
    • Просмотр профиля
Re: Пакетный файл *.bat
« Ответ #9 : 31 Май 2009, 18:25:08 »
Цитата: Silver_Shadow
А как указавать параметр в autoexec.bat для с.bat?просто написать c.bat /1.txt ?
Ещё проще: c.bat 1.txt :)

Добавлено позже:
Только такой вызов вроде как прервёт выполнение autoexec.bat. Чтобы не прервал, нужно писать
call c.bat 1.txt

Оффлайн Silver_Shadow

  • Пользователь
  • Сообщений: 2767
  • Пол: Мужской
  • Ниндзя-гопник
    • Steam
    • Youtube
    • Просмотр профиля
Re: Пакетный файл *.bat
« Ответ #10 : 31 Май 2009, 22:07:40 »
Fly,
Спасибо =)
Только такой вызов вроде как прервёт выполнение autoexec.bat. Чтобы не прервал, нужно писать
call c.bat 1.txt
Я проверял c.bat /1.txt - как шло так и идет, но буду делать по твоему совету  :)