1

Тема: CMD/BAT: Сравнение строк

Задача:
6. Создать командный файл compare.cmd, сравнивающий две строки, передаваемые ему в качестве параметров. Командный файл должен возвращать следующие коды:
        ◦ 0 – строки одинаковы;
        ◦ 1 – строки разные;
        ◦ 2 – не хватает параметров (параметров меньше двух);
        ◦ 3 – «лишние» параметры (параметров больше двух).
Никаких сообщений командный файл выдавать не должен. Вывод на экран отключен.
Создать командный файл для запуска compare.cmd c ретрансляцией параметров. В зависимости от кода завершения, на экран должны выводиться сообщения о результате сравнения.
        7. Модифицировать командный файл, созданный при выполнении предыдущего пункта задания таким образом, чтобы в файл log.txt при каждом сравнении добавлялась следующая информация: дата, время, сравниваемые строки, результат сравнения. В случае неверного числа параметров вместо сравниваемых  строк и результата сравнения должно записываться сообщение об ошибке.

Что сделал я:
file.cmd, запускающий compare.cmd:

date /t>log.txt
time /t>>log.txt
call compare.cmd asd qwe asd
if errorlevel 3 goto :many
if errorlevel 2 goto :little
if errorlevel 1 goto :nesuper
if errorlevel 0 goto :super
:many 
echo "Слишком много параметров">>log.txt
exit
:little
echo "Не хватает данных">>log.txt
exit
:nesuper 
echo "Строки неравны">>log.txt
exit
:super 
echo "Строки равны">>log.txt

и сам compare.cmd:

@echo off
if [not] -%3==- goto :3
if -%1==- goto :2
if -%2==- goto :2
if %1==%2 goto :0
if [not] %1==%2 goto :1
:3 exit /b 3
:2 exit /b 2
:0 exit /b 0
:1 exit /b 1

При запуске file.cmd в log.txt выводится только дата и время. Что я сделал не так?

2

Re: CMD/BAT: Сравнение строк

korney61448
Надо так:


@echo off
if not -%3==- goto :3
if -%1==- goto :2
if -%2==- goto :2
if %1==%2 goto :0
if not %1==%2 goto :1
:3 
exit /b 3
:2 
exit /b 2
:0 
exit /b 0
:1 
exit /b 1