Войти

Показать полную графическую версию : [решено] Проверка по переменной


ware
29-04-2009, 23:34
Как выполнить проверку ,существует ли папка по переменной в которую указали путь?

Тобишь
set /p dir= Путь:

и как теперь проверить существует ли этот путь?

Maza Faka
30-04-2009, 07:52
как теперь проверить существует ли этот путь? »

@Echo Off

Set Folder=C:\Test\

If Exist %Folder% Echo Folder is exist

ware
03-05-2009, 23:18
Ага ,это я понял,а как далее работать,если путь не найден,то что бы кидал заного?

я сделал так,и не получилось

@Echo Off

:main

Set Folder=C:\Test\

If Exist %Folder% goto next

else goto main


и не вышло =(

mitiya
03-05-2009, 23:31
Что-то типа того


@echo off

:main
echo dir ?
set /p dir=

If Exist %dir% goto next
goto main

:next
echo next
pause

ware
03-05-2009, 23:35
Нееее,мне нужно ,что бы он проверил есть ли этот путь,если есть то переход по метке,если нету,то ввод путь заного!

а Хотя....попробую

О!Спасибо,получилось,ловите + =)

Devils0411
28-06-2009, 01:34
Похожая ситуация. Необходимо чтоб батник проверял наличие файла в одной из 2 папок.
Попытался с конструировать файл.

set disk=D:\Install
If exist %disk%\test\Hello.cmd goto 1
goto 2
:1
start %disk%\test\Hello.cmd
:2
start %disk%\test(x86)\Hello.cmd
pause
Батник за цикливается. Подскажите где ошибка?

Iska
28-06-2009, 02:08
Devils0411, после запуска «disk%\test\Hello.cmd» всегда будет происходить и запуск «%disk%\test(x86)\Hello.cmd», причём сразу же, поскольку у «start» не указан параметр «/wait». Проще так:
set disk=D:\Install
If exist "%disk%\test\Hello.cmd" (
start "%disk%\test\Hello.cmd"
) else (
start "%disk%\test(x86)\Hello.cmd"
)
pause
или «start /wait …» (или вообще не «start», а «call») — если нужно ожидание.

А зацикливание… надо знать полный путь и имя файла приведённого кода, а также содержимое пакетных файлов «%disk%\test\Hello.cmd» и «%disk%\test(x86)\Hello.cmd», чтобы сказать что-то определённое.

boss911
22-11-2011, 13:41
SET MyVar1=
SET MyVar2=
SET MyVar3=

IF DEFINED MyVar1 (CALL:next) ELSE (CALL:exit)
Мне нужно проверить СРАЗУ три переменных и если одна/две/три отсутствуют, выполнить метку :exit , если ВСЕ ТРИ присутствуют, то соответственно выполнить метку :next .

Была надежда, что может быть можно перечислить наличия нескольких переменных через запятую/пробел (и с кавычками пробовал), но так, как я понял, нельзя. Написать три строки нельзя, так как метки :exit и :next должны выполнятся только один раз раз. Надеюсь, объяснил понятно, помогите, плиз.

Petya V4sechkin
22-11-2011, 14:14
проверить СРАЗУ три переменных и если одна/две/три отсутствуют, выполнить метку :exit , если ВСЕ ТРИ присутствуют, то соответственно выполнить метку :next
Set AllVars=
If Defined MyVar1 If Defined MyVar2 If Defined MyVar3 Set AllVars=1
If Defined AllVars (Call :next) Else (Call :exit)

sov44
14-06-2012, 19:18
Необходимо ввести системную переменную (%windir%, %date% и т.п.) и получить её значение. Как вывести сообщение, если переменная введена не правильно (%windirR%).

@Echo off
echo.
set /p a=Ведите имя переменой:
echo %a% >nul
If %Errorlevel%==0 (call echo Переменная определена, ее значение %a%) else (echo Переменная не определена)
pause>nul

Iska
14-06-2012, 19:42
1. Например, не вводить, а указывать из существующих.
2.@echo off
setlocal enableextensions enabledelayedexpansion

:Again
set /p sVar=Enter environment variable name:
if not defined %sVar% echo Not found environment variable name [%sVar%] & goto :Again

echo %sVar%: [!%sVar%!]

endlocal
exit /b 0

3.@echo off
setlocal enableextensions enabledelayedexpansion

:Again
set /p sVar=Enter environment variable name:
1>nul 2>&1 set %sVar% || (echo Not found environment variable name [%sVar%] & goto :Again)

echo %sVar%: [!%sVar%!]

endlocal
exit /b 0

Foreigner
14-06-2012, 19:42
sov44,

@echo off
setlocal enabledelayedexpansion

set /p a="Введите переменную: "
set a=!a:%%=!

if defined %a% (set %a%) else (echo Переменная %a% не определена)


:: set %a% ( Можно и так )

sov44
14-06-2012, 21:06
Iska, коды не сработали
Foreigner, то, что надо! Если не затруднит, поясните код (не понял конструкцию set a=!a:%%=!)

Foreigner
14-06-2012, 21:52
не понял конструкцию set a=!a:%%=! »
Удаляет из переменной %a% знак "%" если была введена строка вида "%windir%". Так как set /p возвращает введенную строку, а не разыменовывает переменную.

Iska
14-06-2012, 23:53
Iska, коды не сработали »
??

2.E:\Песочница\0149>0002.cmd
Enter environment variable name:qww
Not found environment variable name [qww]
Enter environment variable name:asd
Not found environment variable name [asd]
Enter environment variable name:windir
windir: [C:\WINDOWS]

3.E:\Песочница\0149>0003.cmd
Enter environment variable name:zxc
Not found environment variable name [zxc]
Enter environment variable name:vbn
Not found environment variable name [vbn]
Enter environment variable name:SystemRoot
SystemRoot: [C:\WINDOWS]

Update: я, кажется, понял — по предыдущему посту коллеги Foreigner — Вами ожидалось, что вводиться должно не имя переменной окружения, а имя вместе с обрамляющими символами процента, так? Я этого не делал.

sov44
15-06-2012, 01:13
имя вместе с обрамляющими символами процента, так? » Совершенно верно. Тем не менее добавлю скрипты в коллекцию.

CyberMuesli
17-06-2012, 02:46
@Echo Off
Set Folder=C:\Test\
If Exist %Folder% Echo Folder is exist
-------
Это сообщение посчитали полезным следующие участники:
ware »

неправильно

Set Folder=C:\autoexec.bat

результат будет exist

Как выполнить проверку ,существует ли папка по переменной в которую указали путь?
Тобишь
Цитата:
set /p dir= Путь:
и как теперь проверить существует ли этот путь? »

call :FolderExist %dir%


::===========================================================================
:FolderExist
::===========================================================================
:: %1=Path[\] folder name without wildcards ("c:\program fi*" is invalid name) [%2]=var
if exist "%~1\*.*" (
set FolderExist=True
) else (
set FolderExist=False
)
if not "%2"=="" set %2=!FolderExist!
goto :eof

Iska
06-11-2019, 00:57
А как выйти из положения, не указывая полный путь, т.е. батник кладется в папку, запускается и проверяется наличие рядом папки…»
Set Folder=%~dp0Test

Sisin
06-11-2019, 01:01
А как выйти из положения, не указывая полный путь, т.е. батник кладется в папку, запускается и проверяется наличие рядом папки…» »

Спасибо, но догадался уже)))




© OSzone.net 2001-2012