Компьютерный форум 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=326599)

vngreez@vk 08-05-2017 12:14 2735031

Проверка переменной
 
Условие такое:
Если пробелов в переменой больше или равно одному, тогда:
echo "Ошибка" & pause & exit

Iska 08-05-2017 12:39 2735049

Код:

if "%sVar%" neq "%sVar: =%" (
        echo Ошибка
        pause
        exit /b 1
)


mwz 08-05-2017 13:03 2735062

vngreez@vk, вариант скелета; в примере проверяется значение переменной %ProgramFiles% на наличие минимум одного пробела:

Код:

echo %ProgramFiles%| find " " >nul
if not errorlevel 1 echo "Ошибка" & pause & exit

PS
Поправлено в соответствии с последовавшей репликой Iska

alpap 08-05-2017 17:13 2735166

Еще вариант, показывающий заодно работу и пользу кавычек:
Код:

@echo off
call :v %Programfiles%
pause& exit

:v
 if not "%~2"=="" echo Ошибка
exit /b

при запуске с параметром (1.bat %Programfiles%) достаточно
Код:

if not "%~2"=="" echo Ошибка& pause

mwz 08-05-2017 17:40 2735178

Цитата:

Цитата alpap
показывающий заодно работу и пользу кавычек »

Скорее — пользу отсутствия кавычек там, где они обычно быть должны: именно это и позволяет вашей конструкции обнаружить пробел. :)

Iska 08-05-2017 18:10 2735187

mwz, позволяет обнаруживать даже там, где его нет. alpap, для решения поставленной задачи Ваш код в указанном виде не подходит. Ибо кроме пробелов в качестве разделителей могут выступать и иные символы. Иллюстрация:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sVar=Мама,Мыла;раму

call :v %sVar%
pause& exit

endlocal
exit /b 0

:v
echo [%1] [%2] [%3] [%4]

if not "%~2"=="" echo Ошибка
exit /b


— пробелов нет, а код ошибочно полагает, что есть.

alpap 08-05-2017 18:57 2735202

Iska,
да, позже уже сам понял что подход неправильный (например: %1переданный - aaa;bbb в выводе будет иметь два параметра aaa и bbb)
ничего, подобные ошибки тоже нужны на форуме для практики


Время: 09:39.

Время: 09:39.
© OSzone.net 2001-