Войти

Показать полную графическую версию : Расскажите как работает данный кусок кода(регулярные выражения)


элькхар
24-10-2012, 21:00
@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
Почему Вы приводите только «выдранный» кусок кода? Почему бы Вам самому не попытаться разобраться, а затем уже спрашивать, если что непонятно будет?!

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




© OSzone.net 2001-2012