Другие языки программирования и технологии

Помогите написать bat файлы, срочно надо, сам изучить уже не успеваю

Помогите, пожалуйста, подскажите.
Срочно нужно решить три задачи, а командные файлы начал изучать только сегодня, вроде бы пол книжки прочитал, но плохо что понял.
Есть три задачи с замечаниями:

Для 1 и 2
В командных файлах предусмотреть сообщение имени, назначения, применения и автора пакетного файла (при пустой командной строке и по ключу /?),* контроль верности командной строки, наличие требуемых* файлов и сохранность имени командного файла. *

1. Вывести на экран монитора номер наименьшего из значений трех параметров a1, a2, a3 или сообщение “Параметры равны”, если значения параметров равны.
2. вывести s=1+2+4+8+...

Для 3
Текущий каталог не изменять, если это специально не оговорено. Там, где необходимо, * имена* файлов* указывать* с полной спецификацией. С клавиатуры при* работе* пакетного* файла* вводить только числа, строковые данные выбирать либо из меню, * либо передавать в* командной строке.

3. Создать командный файл, который выводил бы содержимое каталога, указанного в качестве параметра командной строки, причем пользовате*лю должна быть предоставлена возможность выбора с помощью меню устройства для вывода: на экран (информация выводится по одному
экрану) , в текстовый файл c:\catalog.txt или на принтер.

Буду очень сильно благодарен. И знаете ли вы какую-нибудь хорошую книжку по cmd.exe, command.com и WSH?
могу дать только первый, остальные делать, если честно лениво, хотя и интересно
@cls
@echo off
set fname=%0
for /f %%I in ("%fname%") do set fname=%%~fI
for /f %%I in ("%fname%") do set fname=%%~nI%%~xI
if "%1" == "" call :empty
if "%1" == "/?" call :empty & goto :eof
if "%1" NEQ "" call :first %*
goto :eof

:empty
echo Утилита %fname%
echo Использование:
echo %fname% [/?]
echo получить справку
echo %fname% A B C
echo передать три числа, среди которых надо найти наименьшее. Числа не должны превышать 9999
goto :eof

:first
REM Первый параметр есть
if "%2" neq "" (call :second %*) else (
call :less
)
goto :eof

:second
REM Второй параметр есть
if "%3" neq "" (call :third %*) else (
call :less
)
goto :eof

:min
if %1 lss %2 (exit /b %1) else (
if %2 lss %1 (exit /b %2) else (
exit /b 10000
)
)

:cmp
set f=0
if %1==%2 set /a f=%f% + 1
if %1==%3 set /a f=%f% + 1
if %2==%3 set /a f=%f% + 1
exit /b %f%

:case0
set min=%1
call :min %min% %2
set min=%errorlevel%
call :min %min% %3
set min=%errorlevel%
echo Все параметры различаются: 1-й равен %1, 2-й равен %2, 3-й равен %3
echo Минимальный равен %min%
goto :eof

:case1
if %1==%2 echo Есть совпадающие параметры (1-й и 2-й равны %1, 3-й равен %3)
if %1==%3 echo Есть совпадающие параметры (1-й и 3-й равны %1, 2-й равен %2)
if %3==%2 echo Есть совпадающие параметры (2-й и 3-й равны %2, 1-й равен %1)
call :min %1 %3
if %errorlevel%==10000 set min=%1
call :min %min% %2
if %errorlevel%==10000 (set min=%2) else (set min=%errorlevel%)
echo Минимальный равен %min%
)
goto :eof

:case3
echo Параметры равны и равны %1
goto :eof

:findmin
call :cmp %*
call :case%errorlevel% %*
goto :eof

:third
REM Третий параметр есть
if "%4" neq "" call :many
if "%errorlevel%" == "1" exit /b
call :findmin %1 %2 %3
goto :eof

:many
REM Четвертый параметр есть
echo Слишком много параметров
echo Используйте ключ /?, чтобы познакомиться с синтаксисом
exit /b 1

:less
REM Мало параметров
echo Слишком мало параметров
echo Используйте ключ /?, чтобы познакомиться с синтаксисом
exit /b 1

Если синтаксис расползётся, вот ссыль: http://pastebin.com/kNqQjxUD

---
Уважайте время других участников Ответов. Не забывайте отмечать лучший ответ.
Иван Герцен
Иван Герцен
5 085
Лучший ответ
Весело :) А не приходило на ум, что случится такая ситуация? :) И ведь бесплатно не поможет никто....
Олег Максимович у меня нет желания вам помогать

Вы же бросили саморазвитие!

ОИ
Олег Иванов
9 445