Другое > Hard'n'Soft
Пакетный файл *.bat
(1/1)
Silver_Shadow:
При создании некого пакетного файла для дос (допустим 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:

--- Цитата: 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:

--- Цитата ---Для выбора да, использовать choice. А для вывода файлов *.rar во всех каталогах диска A: команда dir /s a:\*.rar
--- Конец цитаты ---
Точно! забыл про звездочку точка расширение, спасибо ща попробую
Silver_Shadow:
Еще одна проблема возникла


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


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

--- Код: ---echo нужный_текст > имя_файла
--- Конец кода ---
Silver_Shadow:
Fly,
додумался уже -) но все равно спасиб
хотя в самом echo в описании почему то это не описывается
Silver_Shadow:
Сегодня сдавал на проверку преподу, оказалась одна ошибка

В задание сказано что
-
Проверить, задано ли при вызове командного файла C_8.bat в качестве параметра имя проверяемого файла, если нет, то вывести соответствующее сообщение в файл TYP8 текущего диска.
-
Так вот это не учел
Я вот никак не пойму как сделать проверку имено задания файла с параметром проверяемого файла.
То есть сначала идет Autoexec bat в нем вызов с.bat.
Так я должен уже в код c.bat сделать проверку, - а не задано ли при вызове c.bat 1.txt(это проверяемый файл)?
Т.е. если не задано в Autoexec.bat строка c.bat /1.txt то
--- Цитата ---вывести соответствующее сообщение в файл TYP8 текущего диска
--- Конец цитаты ---
Вот,
Каким образом это запмсать? никто не подскажет?
Fly:
Это в c_8.bat писать надо. Например, так:
if not -%1 == -1.txt echo нужный_текст > TYP8

Добавлено позже:

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

--- Цитата: Fly от 31 Май 2009, 00:21:33 ---Это в 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:

--- Цитата: Silver_Shadow ---А как указавать параметр в autoexec.bat для с.bat?просто написать c.bat /1.txt ?
--- Конец цитаты ---
Ещё проще: c.bat 1.txt :)

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

--- Цитата: Fly от 31 Май 2009, 18:25:08 ---Только такой вызов вроде как прервёт выполнение autoexec.bat. Чтобы не прервал, нужно писать
call c.bat 1.txt

--- Конец цитаты ---
Я проверял c.bat /1.txt - как шло так и идет, но буду делать по твоему совету  :)
Навигация
Главная страница сообщений

Перейти к полной версии