Показать полную графическую версию : проверить наличие папок
alek2012
05-06-2013, 11:31
Всем привет. Может кто то писал такой скрипт, чтобы по списку пользователей проверял наличие существующих папок в нужных директориях
с таким же названием как имя пользователя, например есть пользователи admin и admin1
нужно проверить есть ли в директориях \\srv1\ и \\srv2\ папки с именами admin и admin1 , если есть вывести в файл что обнаружены
В чём у Вас сложность написания?
alek2012
05-06-2013, 12:36
я думал может у кого есть готовый пример, а то времени сейчас нет
а то времени сейчас нет »
Прямо таки совсем никак не выделите и десяти минут?! «Не верю!»
megaloman
05-06-2013, 15:23
есть ли в директориях \\srv1\ и \\srv2\ а где директории? ИМХО, здесь имена серверов, должно быть что-то наподобие \\srv1\траляля. В этом случае можно бы было бы написать Dir "\\srv1\траляля\admin" /s /b /A:D
Dir "\\srv1\траляля\admin1" /s /b /A:D
Dir "\\srv2\траляля\admin" /s /b /A:D
Dir "\\srv2\траляля\admin1" /s /b /A:D
megaloman, навряд ли потребно с «/s».
megaloman
05-06-2013, 18:11
Iska, телепатией не страдаю, при той постановке приходится фантазировать по полной программе. Вполне возможно, надо определить наличие "\\srv1\admin" и т д, тогда задача вообще неинтересная, а я вот изобрёл способ разнообразить себе жизнь :) Вот возможный вариант @Echo Off
Call :kuku "\\Srv1\Admin"
Call :kuku "\\Srv2\Admin"
Call :kuku "\\Srv1\Admin1"
Call :kuku "\\Srv2\Admin1"
Goto :Eof
:Kuku
if exist %1 (Echo %1 имеется) Else (Echo %1 отсутствует)
Кстати, почему-то в одну строку наманер
Set A="\\Srv1\Admin\"& if exist %A% (Echo %A% имеется) Else (Echo %A% отсутствует)
у меня не получилось, что-то неверно в синтаксисе.
Iska, телепатией не страдаю, при той постановке приходится фантазировать по полной программе. »
Это — да, согласен.
Кстати, почему-то в одну строку наманер
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
alek2012
07-06-2013, 17:14
Основная задача заключалась, в том что нужно было взять отключенных пользователей в АД и сравнить их названиями профилей, которые имеют такое же название своих каталогов
alek2012
07-06-2013, 18:09
еще такой вопрос, как на PS взять список названий из файла и проверить их существование в директориях например с помощью:
Test-Path \\srv1\ только список имен директорий профайлов admin, admin1, admin2 взять из 1.txt к примеру
\\srv1\ »
Не бывает таких каталогов. Это имя сервера, без указания разделённого ресурса. Или у Вас ресурсами являются как раз куча мала из «admin, admin1, admin2 …»?
$sShare = "\\srv1\Share"
Get-Content -Path "E:\Песочница\0270\1.txt" |`
ForEach-Object -Process {
"$_`t$(Test-Path -Path "$sShare\$_")"
}
alek2012
10-06-2013, 12:42
Именно ресурсами являются как раз куча мала из «admin, admin1, admin2 …
Как этот результат сохранить в файл подскажите плиз еще
уже нашел | out-file e:\result.txt
Именно ресурсами являются как раз куча мала из «admin, admin1, admin2 … »
alek2012, ясно. Но почему был выбран такой нетипичный подход?
alek2012
10-06-2013, 15:23
у меня в организации распределены рабочие столы , диски и профайлы, для того чтобы удобно было управлять ресурсами между филиалами +dfs
alek2012
11-06-2013, 16:12
Может еще подскажете как скопировать папки которые True в определенный каталог?
$sShare = "\\srv1\Share"
Get-Content -Path "E:\Песочница\0270\1.txt" |`
ForEach-Object -Process {
if(Test-Path -Path "$sShare\$_\") {
"$sShare\$_" | Copy-Item -Destination "E:\Песочница\0273" -Recurse -Force
}
}
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.