Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Windows > bat-файл


Автор: Druuk 17.12.2009, 11:24
Доброго дня всем! Нужно написать батник, но не получается сделать, что пользователь сам водил имя и путь к файлу в командной строке. Могу сделать только, чтобы изначально задавать имя файла.  Не могли бы помочь c правильным листингом?
Вот как звучит задание: "Разработать пакетный файл для вывода текстового файла на экран по страницам. Имя файла передается в командной строке."

Автор: kin 17.12.2009, 11:51
Цитата(Druuk @  17.12.2009,  11:24 Найти цитируемый пост)
Нужно написать батник, но не получается сделать, что пользователь сам водил имя и путь к файлу в командной строке. 

создаешь bat-ник, в нутри которого находится следующее: 
more %1
вызов в командной строке:  <имя батника> <имя просматриваемого файла>

Автор: Druuk 17.12.2009, 12:03
Цитата(kin @  17.12.2009,  11:51 Найти цитируемый пост)
вызов в командной строке:  <имя батника> <имя просматриваемого файла> 


А возможно как-нибудь прописывать имя считываемого файла уже после запуска батника? 

Автор: Akina 17.12.2009, 12:19
Да, но это не соответствует твоему заданию.

Автор: Druuk 17.12.2009, 12:29
А, понятно smile Большое спасибо!

Автор: DreamCrusher 21.12.2009, 19:41
Не стал создавать новую тему, чтобы не захламлять форум. Прошу помочь мне исправить командный файл.
Суть задачи в том, что утилита PKLITE запаковывает(компрессия) документы, а uup - распаковывает. Все утилиты (и также утилита CHOICE, т.к. делаю в XP) находится в корневом каталоге вместе с bat-ником.
Вот текст программки:

Код

@echo off
cls
echo ** Программирование командных файлов **
echo ****
echo  Написать программу для компрессии и распаковки 
echo  исполняемых файлов, используя утилиту PKLITE.
pause
PATH ; 
set  b=1:
CHOICE /C:zx " z - compress x - decompress"
IF ERRORLEVEL 2 set b=2;
set /p p="Введите путь обрабатываемого файла:"
set /p d="Введите путь для создания результирующего файла:"
IF b==1
(PKLITE %p% %d%) ELSE (UUP  %p% %d%)
echo Выбранные вами параметры:
echo Файл для компрессии (декомпрессии): %p%
echo Результирующий файл: %d%
pause



Программа вылетает при проверке строчки с IF. Первый мой командный файл. Помогите поправить пожалуйста.

Автор: dumb 22.12.2009, 15:33
Код

@echo off
chcp 1251>nul
cls
echo ** Программирование командных файлов **
echo ****
echo  Написать программу для компрессии и распаковки 
echo  исполняемых файлов, используя утилиту PKLITE.
pause
set b=1
CHOICE /C:zx " z - compress x - decompress"
IF ERRORLEVEL 2 set b=2
set /p p="Введите путь обрабатываемого файла:"
set /p d="Введите путь для создания результирующего файла:"
IF %b%==1 (PKLITE %p% %d%) ELSE (UUP  %p% %d%)
echo Выбранные вами параметры:
echo Файл для компрессии (декомпрессии): %p%
echo Результирующий файл: %d%
pause

Автор: DreamCrusher 22.12.2009, 18:48
Спасибо большое smile 

Автор: rattus 25.2.2010, 00:39
Тоже проблема с написанием bat-файла
Есть следующее задание: Разработать командный файл, добавляющий вводом с клавиатуры содержимое текстового файла (в начало или в конец в зависимости от ключей /b /e).

Вот попытки написать:
@ECHO OFF
echo Первый параметр=%1 rem текстовый файл
echo Второй параметр=%2 rem текст, который надо добавить
echo Третий параметр=%3 rem ключ (в конец или начало файла)

rem проверка третьего параметра
if %3=/e (@echo %2>>C:\%1.txt 
)else( 
if %3=/b // тут по идее должна быть команда, добавляющая текст в начало файла, но я никак не могу понять как это сделать

else echo Параметр задан неверно
Pause)

да и вообще с проверкой третьего ключа у меня ничего не работает.
все на что у меня хватило ума и что работает это батник, имеющий вид:
@ECHO OFF
echo Первый параметр=%1
echo Второй параметр=%2
echo %2>>С:\%1.txt

Может кто сможет помочь-просветить, или поссоветует какую-нить литературу smile . В инете вроде и много примеров. Но не могу найти ничего подходящего:(

Автор: Akina 25.2.2010, 08:54
Цитата(rattus @  25.2.2010,  01:39 Найти цитируемый пост)
тут по идее должна быть команда, добавляющая текст в начало файла, но я никак не могу понять как это сделать

Код

copy con+file.txt dummy.txt
del file.txt
ren dummy.txt file.txt


Цитата(rattus @  25.2.2010,  01:39 Найти цитируемый пост)
if %3=/e

Неправильно. Сделай, например, так:
Код

if /I "%3" EQL "/e"


Добавлено через 44 секунды
Цитата(rattus @  25.2.2010,  01:39 Найти цитируемый пост)
Может кто сможет помочь-просветить, или поссоветует какую-нить литературу

Пуск - Выполнить - CMD<Enter>
IF /?<Enter>

Автор: rattus 25.2.2010, 22:36
Огромное спасибо  smile 
Все получилось  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)