Показать полную графическую версию : [архив] Нужна помощь в написании BAT | CMD | VBS | WSH файлов
MonsterMax SPB
07-12-2005, 10:18
lehha мне не надо всегда и каждый день мне надо периодически а то и вообще один раз.
hasherfrog: локальные. В том то и дело - с ФОРом в ДОСе не знаком)
lehha: у меня десяток юзеров. Переменная ЮЗЕРПРОФАЙЛ содержит путь к папке юзера текущей сессии. ОЛЛЮЗЕРС есть оллюзерс, они мне не требуются).
По ходу, имена юзеров, а возможно и путь к папкам, вытаскивается из реестра тем же For'ом. Как?
ShaddyR
а может попробовать whs у него возможностей поболее будет и выглядеть будет это примерно так:
Dim fso, f, f1, fc, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("c:\\Documents and Settings\\")
Set fc = f.SubFolders
For Each f1 in fc
s = s & f1.name
s = s & CHR(10)
Next
s = s & "Всего папок: " & fc.Count WScript.Echo s
Вот простой скриптик переберающий все папки в документс энд сетингз. Сохрани его с расширением vbs и перебирай все что угодно
lehha: tnx. Но нужен БАТовский скрипт, по нескольким причинам. При большом желании можно и на ДЕЛЬФИях напрограммить, это как раз не есть проблема)
сделай Пуск->Выполнить->cmd
набери help for на сколько я понял for может обробатывать строки других команд т.е. он вполне может обработать Dir ))
hasherfrog
07-12-2005, 16:01
c:
cd "Documents and Settings"
for /d %i in (*) do echo %i
Внутри батника будет ещё дополнительный %
Готово!
Привожу полученный результат:
Основной БАТ-файл
@echo off
cls
for /f "usebackq delims==" %%i in (`"dir "%systemdrive%\Documents and Settings" /ad /b"`) do call clr.bat "%%i"
echo Ok
pause
Вспомогательный (собсно, подпрограмма обработки)
@echo off
IF EXIST "%systemdrive%\Documents and Settings"\%1"\Application Data\Microsoft\Internet Explorer\Quick Launch" goto clear
echo Skipped: %1
goto exit
:clear
rd /s /q "%systemdrive%\Documents and Settings"\%1\"Local Settings\Temporary Internet Files"
md "%systemdrive%\Documents and Settings"\%1\"Local Settings\Temporary Internet Files"
rd /s /q "%systemdrive%\Documents and Settings"\%1\"Local Settings\Temp"
md "%systemdrive%\Documents and Settings"\%1\"Local Settings\Temp"
echo Cleared: %1
:exit
Пришлось поразбираться с хелпом, малость вспомнить DOS. Спасибо всем, особенно hasherfrog и lehha.
ЗЫ: Для тех, кому влом разбираться в коде - первый bat-файл перебирает все папки по пути
СистемныйДиск:\Documents and Settings\
и каждую из найденых папок последовательно передает во второй bat-файл. Задача второго - при наличии в переданной папке
(путь тот же) папки Temp[orary Internet Files] очистить и ту и другую.
Примечания:
1) используемые в данный момент файлы удалены не будут
2) Касперский так разнервничался в процессе - еле успокоил его ;)
ЗЗЫ:
hasherfrog : С пол-часа пытался понять, почему систему так удивляет %i )))
В пакетных файлах для команды FOR используется запись %%переменная вместо
%переменная.
hasherfrog
07-12-2005, 20:44
ShaddyR, знаете, Вы поосторожнее только.
1. В 9х-виндах у FOR не совсем такие ключи, как в 2000-х.
2. Обратите внимание на то, что директория создаётся от имени... кого? Админа? А что скажет винда юзеру на такой финт: у него в хоуме лежит... оба-на... админская директория? Может быть, ниего страшного и нет, впрочем. Но я бы сделал рекурсивное удаление содержимого директории, но не самой директории с её последующим восстановлением. Ну, впрочем, проверяйте. на FAT32-дисках, ЕМНИП, разницы никакой не будет.
до кучи: ставьте по возможности firefox последний, там есть плагин специально для удаления всего "личного" барахла прямо на выходе из браусвера. впрочем, это я так, до кучи...
hasherfrog
на сколько мне извесно директория с профилями прльзователей т.е. Documents and Settings есть ток на системах от win2000, так что кусок это кода
IF EXIST "%systemdrive%\Documents and Settings"\%1\"Local Settings\Temporary Internet Files"
echo Skipped: %1
goto exit
.
.
.
.
:exit
скажет все сам за себя) это я на счет выполнения скрипта на 9х системах ))
обновил код обработчика в предыдущем посте (http://forum.oszone.net/showpost.php?p=380843&postcount=27) - теперь проверка делается по наличию QuickLaunch'а, которого у сервисных папок просто не существует :) Это если кому-нить с какого-нить перепугу эта самоделка пригодится.
ЗЫ: понраилось вошкаться с BAT-ом... на основе вышеозначенного скрипта сделал скрипт для использования каждым юзером собственной конфигурации TotalCommander'a. Могу поделиться, коли кто желает.
помогите с помощью БАТника создать папку с именем, содержащим сегодняшнюю дату (например "backup_14.01.06") и скопировать в неё содердимое другой папки, идеальный вариант- если при этом ещё удастся предварительно упаковать это содержимое(но это не так важно). заранее благодарен
serge_a
Я уже довольно давно пользуюсь на 2к3 сервере следующим скриптом (код. стр. 866)
@cls
@rem ‘ЄаЁЇв аеЁў жЁЁ д ©«®ў %SOURCE% Ї®б।бвў®¬ аеЁў в®а RAR , гбв ­®ў«Ґ­­®Ј®
@rem ў Ї ЇЄг %RAR%. ‚ %DEST% Ўг¤Ґв б®§¤ ­ аеЁў ў д®а¬ ⥠%NAME%%DATETIME%.rar .
@rem %PACK_LVL% § ¤ Ґв б⥯Ґ­м б¦ вЁп , ®в 0 ¤® 5 (0 = ЎҐ§ б¦ вЁп, 5 = ¬ Єб) .
@rem Ѓг¤Ґв ¤®Ў ў«Ґ­ Ё­д®а¬ жЁп ¤«п ў®ббв ­®ў«Ґ­Ёп Ё аеЁў Ўг¤Ґв § Ў«®ЄЁа®ў ­
@rem ®в Ё§¬Ґ­Ґ­Ё©.
@rem Script code updated : 26.11.2005
@set "SOURCE=C:\my important data\*.*"
@set "DEST=D:\my backup data"
@set "RAR=%PROGRAMFILES%\WinRAR"
@set "NAME=backup_"
@set "DATETIME=YYYY.MM.DD-HH;MM;SS"
@set "PACK_LVL=5"
@"%RAR%\rar" a "-ag%DATETIME%" -idc -k -m%PACK_LVL% -oc -os -ow -r -rr3p "%DEST%\%NAME%" "%SOURCE%"
Требуется rar/winrar . Создается не папка, а архив папки. В принципе для ввода текущей даты куда-либо можно использовать глобальную переменную %DATE% , например md backup_%DATE% . Подробнее см. справку команды set
MonsterMax SPB
16-01-2006, 13:32
Savant супер! А еще с синтаксисом 7zip плиз :)
MC_Dimka
07-02-2006, 14:19
Помогите написать *.bat для запуска программы после ввода пароля, и ввод пароля не должен отображатса....
и желательно чтоб пароль брался из файла. :help:
hasherfrog
08-02-2006, 08:46
MC_Dimka
>> и желательно чтоб пароль брался из файла
Применительно к BAT - Секьюрность очень уж маленькая.
Лучше всё-таки бинарник скомпилить.
Куда-то исчезло окно в котором я писал, так что напечатаю еще раз. Я и не знал (или забыл), что такая тема есть, а то давно бы уже спросил. Есть скрипт у меня недоделаный для импорта пользовательских (HKCU) настроек во все локальные профили после установки системы. Слепил я его на основе того, что мне прислал один из участников конференции@echo off
:: Get the profiles directory from the registry
for /f "usebackq tokens=3,3* delims== " %%i in (`reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" /v ProfilesDirectory`) do set profiles=%%i
:: Set the profiles dir as %profiles%
for /f "usebackq delims==" %%i in (`echo %profiles%`) do set profiles=%%i
::For all folders (usernames) in the profiles dir except for the All Users (and %Username% - ???)
:: load the profile hive into HKU\Custom and import the tweak.
:: помимо папки All Users надо исключить еще и %USERNAME%, т.к. его профиль не подгрузишь - он занят
:: ну он просто ошибку выдает, но некрасиво как-то :)
for /f "usebackq tokens=1,1* delims==" %%i in (`dir /b "%profiles%"`) do (
if /i "%%i" neq "All Users" (
reg load HKU\custom "%profiles%\%%i\NTUSER.DAT"
regedit /s tweak.reg
reg unload HKU\custom
)
)
pause
exitЗначит находим папку с профилями, берем оттуда названия папок (usernames) и для каждого кроме All Users (if /i "%%i" neq "All Users") загружаем NTUSER.dat и импортируем твик. Но при таком переборе свой профиль не загрузишь, т.к. он используется. Попытка импорта в него выдает ошибку. И хотя скрипт и продолжает отработку, как-то некрасиво :)
Можно как-то сформулировать два условия сразу: если значение не равно All Users или не равно %username%, то выполняем скрипт дальше.
MC_Dimka
13-02-2006, 14:54
hasherfrog
Секьюрность очень уж маленькая.
да мне все равно какая секьюрность....хоть скажите как зделать чтоб при вводе символов они не отображались (или были ****))
Можно как-то сформулировать два условия сразу: если значение не равно All Users или не равно %username%, то выполняем скрипт дальше.
можно например так... если конечно я правильно понял:For /F "usebackq tokens=* delims==" %%i in (`DIR /B /AD-H-S "%profiles%" ^| FINDSTR /V /B /I /C:"All Users" /C:"%username%"`) DO (
...
)З.Ы. хорошо бы еще и reg-файл не редактировать... :search:
да мне все равно какая секьюрность....хоть скажите как зделать чтоб при вводе символов они не отображались (или были ****))
Для XP/2003 можно сделать на WSH. Например, текст start.vbs:Set objPWD = CreateObject("ScriptPW.Password")
Set objWSH = CreateObject("WScript.Shell")
WScript.StdOut.Write "Please enter your password:"
strPassword = objPWD.GetPassword()
If strPassword = "password" Then
objWSH.Run ("notepad")
End Ifзапуск:cscript start.vbs
MC_Dimka
14-02-2006, 13:55
amel27
Чет нече не запускает...:(
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.