Показать полную графическую версию : [решено] Проверка переменной
vngreez@vk
08-05-2017, 12:14
Условие такое:
Если пробелов в переменой больше или равно одному, тогда:
echo "Ошибка" & pause & exit
if "%sVar%" neq "%sVar: =%" (
echo Ошибка
pause
exit /b 1
)
vngreez@vk, вариант скелета; в примере проверяется значение переменной %ProgramFiles% на наличие минимум одного пробела:
echo %ProgramFiles%| find " " >nul
if not errorlevel 1 echo "Ошибка" & pause & exit
PS
Поправлено в соответствии с последовавшей репликой Iska
Еще вариант, показывающий заодно работу и пользу кавычек:
@echo off
call :v %Programfiles%
pause& exit
:v
if not "%~2"=="" echo Ошибка
exit /b
при запуске с параметром (1.bat %Programfiles%) достаточно
if not "%~2"=="" echo Ошибка& pause
показывающий заодно работу и пользу кавычек »
Скорее — пользу отсутствия кавычек там, где они обычно быть должны: именно это и позволяет вашей конструкции обнаружить пробел. :)
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
http://i.imgur.com/HV0XI5c.png
— пробелов нет, а код ошибочно полагает, что есть.
Iska,
да, позже уже сам понял что подход неправильный (например: %1переданный - aaa;bbb в выводе будет иметь два параметра aaa и bbb)
ничего, подобные ошибки тоже нужны на форуме для практики
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.