Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Расскажите как работает данный кусок кода(регулярные выражения) (http://forum.oszone.net/showthread.php?t=245411)

элькхар 24-10-2012 21:00 2011522

Расскажите как работает данный кусок кода(регулярные выражения)
 
Код:


@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 24-10-2012 21:13 2011528

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

элькхар 24-10-2012 21:26 2011535

Выдранный привел так как в остальном разобрался, а здесь не смог остальной код не несет никакой нагрузки к данной части, зачем мусорить?
Более конкретные вопросы
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 24-10-2012 21:51 2011549

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

2.
Код:

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

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

3.
Цитата:

Цитата элькхар
что такое usebackq? »

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

Цитата:

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

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

HELP | FINDSTR /R /C:"^[A-Z]"
— увидите. Символ «^» используется внутри скобок для экранирования специальных символов, здесь — для символа конвейера «|».

4.
Цитата:

Цитата элькхар
что такое NEQ »

Код:

if /?
Цитата:

Цитата элькхар
и "%%~$PATH:I" »

Код:

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

элькхар 24-10-2012 22:04 2011555

Огромное спасибо!


Время: 19:14.

Время: 19:14.
© OSzone.net 2001-