Войти

Показать полную графическую версию : Поиск расшаренных папок


Shumsky
02-08-2013, 15:58
Доброго времени суток. Возникла задача поиска расшаренных папок и файлов в них. Что сделал в данный момент:
@echo off
::подключаемся к шаре
net use \\test\test test /user:test
::пишем в лог айпишник и имя компьютера
ipconfig>>\\test\test\%computername%_%username%.txt
::ищем все расшаренные папки
for /F "Tokens=2,* Delims= " %%I In ('net share ^| find ":"') do (
echo %%I
@dir /b /s /a /q "%%I\*.xls" >> \\test\test\%computername%_%username%.txt
@dir /b /s /a /q "%%I\*.doc" >> \\test\test\%computername%_%username%.txt
)

что ниасилил:
1. папка Documents and Settings в %%I числится как C:\DOCUMENTS
2. условие: если имя диска != S - то только тогда в нем ищем все, что видим (на самом то деле не нашел как найти подстроку в строке: без awk очень и очень грустно :()
3. Ошибки
Синтаксическая ошибка в имени файла, имени папки или метке тома.
Синтаксическая ошибка в имени файла, имени папки или метке тома.
Не удается найти указанный файл.
Не удается найти указанный файл.
Файл не найден
Файл не найден
хотя все имена существующих файлов помещены в лог файл.

Вопрос: где я дурак?:) PowerShell && cygwin и иже с ними не предлагать: нужно, чтобы это работало на нативной винде

Foreigner
02-08-2013, 16:33
Shumsky,
А как net share выводит "ресурсы" с пробелами в пути, в кавычках? Попробуй так:

@echo off
setlocal

for /f "tokens=*" %%i in (' "net share | findstr ":"" ') do call:1 %%i
goto:eof

:1
for %%i in (%*) do (

2>nul pushd "%%~i" && dir /s /a /q *.doc *.xls >> \\test\test\%computername%_%username%.txt

)

popd
ЗЫ. ключ /q не работает c ключом /b

Iska
02-08-2013, 16:59
PowerShell && cygwin и иже с ними не предлагать: нужно, чтобы это работало на нативной винде »
Бред. Ставьте PowerShell на одну машину — свою, и пользуйте его для сбора сведений со всей локальной сети.

"Server01", "Server02", "ServerNN" | ForEach-Object -Process {
$sComputer = $_
Get-WmiObject -Class Win32_Share -ComputerName $sComputer -Property Name, Path -Filter "Type = 0" | `
ForEach-Object -Process {
Get-ChildItem -Path $("\\$sComputer\" + $_.Name) -Recurse
}
}

Shumsky
02-08-2013, 18:40
Foreigner »
спасибо, то что надо.

Iska, нельзя так, ой как нельзя. Совсем нельзя. Ни капельки: вы ж всего скриптика не видели совершенно, не так ли?:) А там еще и ништяки вроде происка по локальным дискам. А локальные диски ой как нехорошо расшаривать

Iska
02-08-2013, 19:09
Shumsky, в доменной сети все локальные диски разделяются на доступ («административные ресурсы», если не запрещено групповой политикой) ;). Просто уберите «-Filter "Type = 0"» из запроса.

вы ж всего скриптика не видели совершенно, не так ли? »
Это Ваши проблемы, коллега, что Вы не излагаете всего ТЗ.

romin1952
02-11-2021, 08:29
Привет . Таки к какому скрипту пришли в итоге ?




© OSzone.net 2001-2012