Цитата megaloman:
Iska, телепатией не страдаю, при той постановке приходится фантазировать по полной программе. »
|
Это — да, согласен.
Цитата megaloman:
Кстати, почему-то в одну строку наманер
Set A="\\Srv1\Admin\"& if exist %A% (Echo %A% имеется) Else (Echo %A% отсутствует)
у меня не получилось, что-то неверно в синтаксисе. »
|
Всё верно. Просто «%A%» раскрывается в момент интерпретации
всей строки, целиком, т.е.:
Код:

Set A="\\Srv1\Admin\"& if exist %A% (Echo %A% имеется) Else (Echo %A% отсутствует)
Естественно, переменная окружения «A» к этому моменту пустая. Это поведение равнозначно поведению переменной окружения внутри скобок («for … do (…)», «if … (…) else (…)» и т.п.).
Вот, посмотрите:
Код:

rem @echo off
setlocal enableextensions enabledelayedexpansion
set "sPath=%~dp0" & if exist "%sPath%" (echo [%sPath%] exists) else (echo [%sPath%] not found)
endlocal
exit /b 0
Цитата:
Код: 
E:\Песочница\0268>rem @echo off
E:\Песочница\0268>setlocal enableextensions enabledelayedexpansion
E:\Песочница\0268>set "sPath=E:\Песочница\0268\" & if exist "" (echo [] exists ) else (echo [] not found )
[] not found
E:\Песочница\0268>endlocal
E:\Песочница\0268>exit /b 0
|
Переменная «sPath» раскрывается в момент интерпретации строки, и потому — пуста.
Можно ещё так показать этот момент:
Код:

rem @echo off
setlocal enableextensions enabledelayedexpansion
set "sPath=bla-bla-bla"
set "sPath=%~dp0" & if exist "%sPath%" (echo [%sPath%] exists) else (echo [%sPath%] not found)
endlocal
exit /b 0
Цитата:
Код: 
E:\Песочница\0268>rem @echo off
E:\Песочница\0268>setlocal enableextensions enabledelayedexpansion
E:\Песочница\0268>set "sPath=bla-bla-bla"
E:\Песочница\0268>set "sPath=E:\Песочница\0268\" & if exist "bla-bla-bla" (echo [bla-bla-bla] exists ) else (echo
[bla-bla-bla] not found )
[bla-bla-bla] not found
E:\Песочница\0268>endlocal
E:\Песочница\0268>exit /b 0
|
Вывод — нужно использовать отложенное раскрытие переменной:
Код:

rem @echo off
setlocal enableextensions enabledelayedexpansion
set "sPath=%~dp0" & if exist "!sPath!" (echo [!sPath!] exists) else (echo [!sPath!] not found)
endlocal
exit /b 0
Цитата:
Код: 
E:\Песочница\0268>rem @echo off
E:\Песочница\0268>setlocal enableextensions enabledelayedexpansion
E:\Песочница\0268>set "sPath=E:\Песочница\0268\" & if exist "!sPath!" (echo [!sPath!] exists ) else (echo [!sPath
!] not found )
[E:\Песочница\0268\] exists
E:\Песочница\0268>endlocal
E:\Песочница\0268>exit /b 0
|