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

alek2012 05-06-2013 11:31 2162634

проверить наличие папок
 
Всем привет. Может кто то писал такой скрипт, чтобы по списку пользователей проверял наличие существующих папок в нужных директориях
с таким же названием как имя пользователя, например есть пользователи admin и admin1
нужно проверить есть ли в директориях \\srv1\ и \\srv2\ папки с именами admin и admin1 , если есть вывести в файл что обнаружены

Iska 05-06-2013 11:46 2162646

В чём у Вас сложность написания?

alek2012 05-06-2013 12:36 2162693

я думал может у кого есть готовый пример, а то времени сейчас нет

Iska 05-06-2013 13:49 2162745

Цитата:

Цитата alek2012
а то времени сейчас нет »

Прямо таки совсем никак не выделите и десяти минут?! «Не верю!»

megaloman 05-06-2013 15:23 2162797

Цитата:

Цитата alek2012
есть ли в директориях \\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


Iska 05-06-2013 16:29 2162819

megaloman, навряд ли потребно с «/s».

megaloman 05-06-2013 18:11 2162877

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 05-06-2013 19:31 2162923

Цитата:

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



alek2012 07-06-2013 17:14 2163925

Основная задача заключалась, в том что нужно было взять отключенных пользователей в АД и сравнить их названиями профилей, которые имеют такое же название своих каталогов

alek2012 07-06-2013 18:09 2163967

еще такой вопрос, как на PS взять список названий из файла и проверить их существование в директориях например с помощью:

Test-Path \\srv1\ только список имен директорий профайлов admin, admin1, admin2 взять из 1.txt к примеру

Iska 07-06-2013 20:47 2164078

Цитата:

Цитата alek2012
\\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 2165278

Именно ресурсами являются как раз куча мала из «admin, admin1, admin2 …

Как этот результат сохранить в файл подскажите плиз еще

уже нашел | out-file e:\result.txt

Iska 10-06-2013 13:53 2165305

Цитата:

Цитата alek2012
Именно ресурсами являются как раз куча мала из «admin, admin1, admin2 … »

alek2012, ясно. Но почему был выбран такой нетипичный подход?

alek2012 10-06-2013 15:23 2165348

у меня в организации распределены рабочие столы , диски и профайлы, для того чтобы удобно было управлять ресурсами между филиалами +dfs

alek2012 11-06-2013 16:12 2165935

Может еще подскажете как скопировать папки которые True в определенный каталог?

Iska 11-06-2013 23:28 2166189

Код:

$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
        }
    }



Время: 18:15.

Время: 18:15.
© OSzone.net 2001-