CMD/BAT - Расскажите как работает данный кусок кода(регулярные выражения)

Ответить
Аватара пользователя
элькхар

CMD/BAT - Расскажите как работает данный кусок кода(регулярные выражения)

Сообщение элькхар »

Код:

Код: Выделить всё

@echo off
title Super HELP
:main
echo Enter "HELP" for super help
echo.
echo Enter any key for start program
echo.
echo Enter "EX" for exit programm
echo.
set /p x=
if %errorlevel% GEQ 1 goto error
if %x%==help goto help
if %x%==ex goto ex
:begin
SETLOCAL ENABLEDELAYEDEXPANSION
IF NOT EXIST INT MKDIR INT
IF NOT EXIST EXT MKDIR EXT
FOR /F "tokens=1 usebackq" %%a IN (`HELP ^| FINDSTR /R /C:"^[A-Z]"`) DO (
SET FOUND=0
IF !FOUND! NEQ "1" (
FOR %%I IN ("%%a.COM") DO (
IF "%%~$PATH:I" NEQ "" SET FOUND="1"
) 
FOR %%I IN ("%%a.EXE") DO (
IF "%%~$PATH:I" NEQ "" SET FOUND="1"
) 
echo.%%a "!FOUND!" 
IF !FOUND!=="1" (%%a /? > EXT\%%a.txt) ELSE (HELP %%a > INT\%%a.txt)
))
pause > nul
cls
goto main
:help 
echo.
echo Super HElP 2012
echo.
pause > nul
cls
goto main
:error
echo.
echo ERROR! RE-ENTER!
echo.
pause > nul
cls
goto main
:ex
exit

Особенно интересует выделенное жирным, буду очень благодарен за описание регулярных выражений
Аватара пользователя
Iska

Re: CMD/BAT - Расскажите как работает данный кусок кода(регулярные выражения)

Сообщение Iska »

Почему Вы приводите только «выдранный» кусок кода? Почему бы Вам самому не попытаться разобраться, а затем уже спрашивать, если что непонятно будет?!
Аватара пользователя
элькхар

Re: CMD/BAT - Расскажите как работает данный кусок кода(регулярные выражения)

Сообщение элькхар »

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

Более конкретные вопросы

1)

Код:

Код: Выделить всё

set /p x=

означает что x вводится с клавиатуры?

2)

Код:

Код: Выделить всё

IF NOT EXIST INT MKDIR INT
IF NOT EXIST EXT MKDIR EXT

как работают эти строки?

3)

Код:

Код: Выделить всё

FOR /F "tokens=1 usebackq" %%a IN (`HELP ^| FINDSTR /R /C:"^[A-Z]"`)

что такое usebackq?

(`HELP ^| FINDSTR /R /C:"^[A-Z]"`) как это работает?

4)

Код:

Код: Выделить всё

(
SET FOUND=0
IF !FOUND! NEQ "1" (
FOR %%I IN ("%%a.COM") DO (
IF "%%~$PATH:I" NEQ "" SET FOUND="1"
)

снова что тут происходит? (что такое NEQ и "%%~$PATH:I")

5)

Код:

Код: Выделить всё

pause > nul

зачем нужна эта строка?
Аватара пользователя
Iska

Re: CMD/BAT - Расскажите как работает данный кусок кода(регулярные выражения)

Сообщение Iska »

1. Да. Введённое с консоли значение, которое будет присвоено переменной окружения «x».



2.



Код:

Код: Выделить всё

IF NOT EXIST INT MKDIR INT
IF NOT EXIST EXT MKDIR EXT

Если в текущем каталоге не существует файла или папки с именем «INT» («EXT») создать в текущем каталоге папку с именем «INT» («EXT»).



3.
Цитата элькхар:



что такое usebackq?
CMD/BAT - Расскажите как работает данный кусок кода(регулярные выражения)




Предикат, позволяющий использовать внутри команды в скобках как апостроф «'», так и кавычки «"», задействуя для ограничения строки с самой командой обратный апостроф «`».




Цитата элькхар:



(`HELP ^| FINDSTR /R /C:"^[A-Z]"`) как это работает?
CMD/BAT - Расскажите как работает данный кусок кода(регулярные выражения)




Выполните в командной строке:



Код:

Код: Выделить всё

HELP | FINDSTR /R /C:"^[A-Z]"

— увидите. Символ «^» используется внутри скобок для экранирования специальных символов, здесь — для символа конвейера «|».



4.
Цитата элькхар:



что такое NEQ
CMD/BAT - Расскажите как работает данный кусок кода(регулярные выражения)






Код:


Цитата элькхар:



и "%%~$PATH:I"
CMD/BAT - Расскажите как работает данный кусок кода(регулярные выражения)






Код:

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

Вернуться в «Скриптовые языки администрирования Windows»