Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 14
Благодарности: 2

Профиль | Отправить PM | Цитировать


0bject
вот пример скрипта который пробегает по включённым машинам домена и раскидывает/удаляет файлы (можно делать и другие действия)

Код: Выделить весь код
@rem Скрипт определяет все компьютеры сети и позволяет переписать/удалить файл на всех машинах в 1 месте
@rem Copywrite by Vovan[CAD]

@rem файл который нужно разбросать по машинам (с полным путём)
set sourcefile=o:\PDFFactory\GdiPlus.dll
@rem локальный путь на машинах куда надо положить файл (на конце должен быть \)
set DestinationPath=c$\progra~1\skype\
@rem удаляем старый лог если есть
if exist result.txt del result.txt

@rem Записываем список машин в сети в файл
set listfile=hosts.txt
net view /domain:test > %listfile%

@rem переменной %%i поочерёдно присваевается значение первого токена в каждой строке файла
for /f "tokens=1" %%i in (%listfile%) do call :procedure %%i

@rem procedure выполняется на каждой машине из списка
:procedure
@rem дописываем в лог имя машины
@echo %1 >>result.txt
if exist %1\%DestinationPath% pause
rem copy %sourcefile% %1\%DestinationPath% >>result.txt
rem del %1\%DestinationPath%\test.txt
exit /b
а вот мой вариант удаления только вложенных подпапок (удалить всю папку нельзя - нужно чтобы права на общую папку не полетели)
а учитывая что
del /Q/S/F %destination%\*.*
не задевает подпапки

Код: Выделить весь код
@rem удаляет все подпапки с содержимым в заданной папке; файлы лежащие непосредственно в этой папке остаются
@rem copywrive by Vovan[CAD]

@rem параметр - полный путь к обрабатываемой папке без слэша вконце
@rem проверка что параметр задан
if %1*==* goto NOPARAM

set listfile=Spisok.txt
set workdisk=%~d1
set workdir=%1
set curpath=%~dp0
set curdisk=%~d0
@rem переходим в рабочую папку
%workdisk%
cd %workdir%
@rem записывает имена подпапок содержащихся в папке в файл %listfile%
@rem параметры по умолчанию для dir задаются в переменной DIRCMD
dir /b /a:d /o:ge >%listfile%
@rem для каждой папки из списка вызываем функцию её удаления с содержимым
for /f "tokens=*" %%i in (%listfile%) do call :deldir "%~1\%%i"
@rem удаляем файл-список
del %listfile%
@rem возвращаемся в текущую папку
%curdisk%
cd %curdir%
goto end

@rem функция удаляющая папку с вложенными файлами и подпапками
:DELDIR
if exist %1 del /Q/S/F %1
if exist %1 rmdir /Q /S %1
exit /b

@rem запуск без параметров
:NOPARAM
@echo off
cls
echo Параметры командной строки:
echo %0 полный путь к обрабатываемой папке без слэша вконце в двойных кавычках!
pause
goto end
:END
может кому-то пригодятся

Отправлено: 02:29, 18-09-2007 | #58