Показать полную графическую версию : [решено] Проверка по переменной
Как выполнить проверку ,существует ли папка по переменной в которую указали путь?
Тобишь
set /p dir= Путь:
и как теперь проверить существует ли этот путь?
Maza Faka
30-04-2009, 07:52
как теперь проверить существует ли этот путь? »
@Echo Off
Set Folder=C:\Test\
If Exist %Folder% Echo Folder is exist
Ага ,это я понял,а как далее работать,если путь не найден,то что бы кидал заного?
я сделал так,и не получилось
@Echo Off
:main
Set Folder=C:\Test\
If Exist %Folder% goto next
else goto main
и не вышло =(
Что-то типа того
@echo off
:main
echo dir ?
set /p dir=
If Exist %dir% goto next
goto main
:next
echo next
pause
Нееее,мне нужно ,что бы он проверил есть ли этот путь,если есть то переход по метке,если нету,то ввод путь заного!
а Хотя....попробую
О!Спасибо,получилось,ловите + =)
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
Батник за цикливается. Подскажите где ошибка?
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», чтобы сказать что-то определённое.
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)
Необходимо ввести системную переменную (%windir%, %date% и т.п.) и получить её значение. Как вывести сообщение, если переменная введена не правильно (%windirR%).
@Echo off
echo.
set /p a=Ведите имя переменой:
echo %a% >nul
If %Errorlevel%==0 (call echo Переменная определена, ее значение %a%) else (echo Переменная не определена)
pause>nul
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% ( Можно и так )
Iska, коды не сработали
Foreigner, то, что надо! Если не затруднит, поясните код (не понял конструкцию set a=!a:%%=!)
Foreigner
14-06-2012, 21:52
не понял конструкцию set a=!a:%%=! »
Удаляет из переменной %a% знак "%" если была введена строка вида "%windir%". Так как set /p возвращает введенную строку, а не разыменовывает переменную.
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 — Вами ожидалось, что вводиться должно не имя переменной окружения, а имя вместе с обрамляющими символами процента, так? Я этого не делал.
имя вместе с обрамляющими символами процента, так? » Совершенно верно. Тем не менее добавлю скрипты в коллекцию.
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
А как выйти из положения, не указывая полный путь, т.е. батник кладется в папку, запускается и проверяется наличие рядом папки…»
Set Folder=%~dp0Test
А как выйти из положения, не указывая полный путь, т.е. батник кладется в папку, запускается и проверяется наличие рядом папки…» »
Спасибо, но догадался уже)))
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.