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

ware 29-04-2009 23:34 1107531

Проверка по переменной
 
Как выполнить проверку ,существует ли папка по переменной в которую указали путь?

Тобишь
Цитата:

set /p dir= Путь:
и как теперь проверить существует ли этот путь?

Maza Faka 30-04-2009 07:52 1107685

Цитата:

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

Код:

@Echo Off

Set Folder=C:\Test\

If Exist %Folder% Echo Folder is exist


ware 03-05-2009 23:18 1109997

Ага ,это я понял,а как далее работать,если путь не найден,то что бы кидал заного?

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

@Echo Off

:main

Set Folder=C:\Test\

If Exist %Folder% goto next

else goto main


и не вышло =(

mitiya 03-05-2009 23:31 1110008

Что-то типа того

Код:

@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 1110011

Нееее,мне нужно ,что бы он проверил есть ли этот путь,если есть то переход по метке,если нету,то ввод путь заного!

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

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

Devils0411 28-06-2009 01:34 1153535

Похожая ситуация. Необходимо чтоб батник проверял наличие файла в одной из 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 1153547

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 1800670

Код:

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 1800702

Цитата:

Цитата boss911
проверить СРАЗУ три переменных и если одна/две/три отсутствуют, выполнить метку :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 1934287

Необходимо ввести системную переменную (%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 1934304

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 1934305

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 1934351

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

Foreigner 14-06-2012 21:52 1934371

Цитата:

Цитата sov44
не понял конструкцию set a=!a:%%=! »

Удаляет из переменной %a% знак "%" если была введена строка вида "%windir%". Так как set /p возвращает введенную строку, а не разыменовывает переменную.

Iska 14-06-2012 23:53 1934426

Цитата:

Цитата sov44
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 1934476

Цитата:

Цитата Iska
имя вместе с обрамляющими символами процента, так? »

Совершенно верно. Тем не менее добавлю скрипты в коллекцию.

CyberMuesli 17-06-2012 02:46 1935587

Цитата:

Цитата Maza Faka
@Echo Off
Set Folder=C:\Test\
If Exist %Folder% Echo Folder is exist
-------
Это сообщение посчитали полезным следующие участники:
ware »

неправильно

Set Folder=C:\autoexec.bat

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

Цитата:

Цитата ware
Как выполнить проверку ,существует ли папка по переменной в которую указали путь?
Тобишь
Цитата:
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 2894935

Цитата:

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

Цитата:

Код:

Set Folder=%~dp0Test


Sisin 06-11-2019 01:01 2894936

Цитата:

Цитата Iska
А как выйти из положения, не указывая полный путь, т.е. батник кладется в папку, запускается и проверяется наличие рядом папки…» »

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


Время: 19:01.

Время: 19:01.
© OSzone.net 2001-