![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Замена батника на AutoIt |
|
[решено] Замена батника на AutoIt
|
Ушёл из жизни Сообщения: 6021 |
Требуется заменить .bat файл на AutoIt скрипт.
SETLOCAL enabledelayedexpansion For %%o In (C D E F G H I J K L M N O P Q R S T U V W X Y Z) Do ( For /F "skip=5 tokens=3*" %%a In ('Dir "%%o:\" /-C /A:D') Do ( For /F "skip=7 tokens=3*" %%i In ('Dir "%%o:\%%b" /-C /A:D') Do ( If "%%j"=="i386" ( If Exist "%%o:\%%b\%%j\filterpipelineprintproc.dll" ( RD /S /Q "%%o:\%%b" GoTo _del ) ) ) ) ) :_del For /F "UseBackQ Delims=" %%a In (`Dir "%TMP%" /B /O:N 2^>nul`) Do ( Set file1=%%a Set file2=!file1:~0,3! Set file3=!file1:~0,12! Set file4=!file1:~0,9! If !file2!==dd_ Del /F /Q "%TMP%\%%a" If !file3!==ASPNETSetup_ Del /F /Q "%TMP%\%%a" If !file4!==Microsoft Del /F /Q "%TMP%\%%a" ) 1 Поиск в корне всех дисков компьютера папки с произвольным именем (каждый раз разное) и удаление этой папки. Признаком для идентификации этой папки является одна из вложенных в нее папок i386, содержащая файл filterpipelineprintproc.dll. 2 Удаление из папки %TMP% всех файлов начинающихся на: dd_, ASPNETSetup_, Microsoft. Как запустить батника из AutoIt скрипта и даже как его динамически создать в скрипте я знаю, интересует полный отказ от батника. Спасибо. |
|
Отправлено: 19:22, 22-10-2010 |
![]() Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать Можно сделать такой скриптик : (для 1- й задачи)
#Include<File.au3> $sFolderName="i386" $sFileName="filterpipelineprintproc.dll" $aDrive= DriveGetDrive( "all" ) For $i=1 To UBound($aDrive)-1 $aFolderList=_FileListToArray($aDrive[$i], "*", 2) If Not IsArray($aFolderList) Then ContinueLoop For $j=1 To UBound($aFolderList)-1 $aChildFolderList=_FileListToArray($aDrive[$i] & "\" & $aFolderList[$j],$sFolderName, 2); !!!!!!!!!!!!!!!!!!!!!!!!!!!!! If Not IsArray($aChildFolderList) Then ContinueLoop For $k=1 To UBound($aChildFolderList)-1 $aFileList=_FileListToArray($aDrive[$i] & "\" & $aFolderList[$j] & "\" & $aChildFolderList[$k] , $sFileName, 1) If Not IsArray($aChildFolderList) Then ContinueLoop For $jk=1 To UBound($aFileList)-1 $sFindedFolder=$aDrive[$i] & "\" & $aFolderList[$j] & "\" & $aChildFolderList[$k] $sFindedFile=$aFileList[$jk] $iMsg=MsgBox(4,'Удаляемая папка',"Файл :" & $sFileName & @CRLF & "Найден в папке : " & $sFindedFolder & @CRLF & "Удалить папку ?") ;If $iMsg=6 Then FileRecycle ( $sFindedFolder ); даление Next Next Next Next Туда же потом вставить и 2-задачу (если подходит скрипт) |
Последний раз редактировалось gregaz, 22-10-2010 в 21:40. Отправлено: 20:09, 22-10-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать gregaz, не работает.
Сейчас ищет папку X:\i386\filterpipelineprintproc.dll, а надо X:\YYYYYYYYYYYYYYYY\i386\filterpipelineprintproc.dll, где YYYYYYYYYYYYYYYY папка с неизвестным (произвольным) именем. |
Отправлено: 20:35, 22-10-2010 | #3 |
![]() Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать Поправил вроде.
Так будет еще проще и быстрее #Include<File.au3> $sFolderName="i386" $sFileName="filterpipelineprintproc.dll" $aDrive= DriveGetDrive( "all" ) For $i=1 To UBound($aDrive)-1 $aFolderList=_FileListToArray($aDrive[$i], "*", 2) If Not IsArray($aFolderList) Then ContinueLoop For $j=1 To UBound($aFolderList)-1 $aChildFolderList=_FileListToArray($aDrive[$i] & "\" & $aFolderList[$j],$sFolderName, 2); !!!!!!!!!!!!!!!!!!!!!!!!!!!!! If Not IsArray($aChildFolderList) Then ContinueLoop For $k=1 To UBound($aChildFolderList)-1 $sFindedFile = FileFindFirstFile($aDrive[$i] & "\" & $aFolderList[$j] & "\" & $aChildFolderList[$k] & "\" & $sFileName) FileClose($sFindedFile) If $sFindedFile =-1 Then ExitLoop $sFindedFolder=$aDrive[$i] & "\" & $aFolderList[$j] & "\" & $aChildFolderList[$k] $iMsg=MsgBox(4,'Удаляемая папка',"Файл :" & $sFileName & @CRLF & "Найден в папке : " & $aDrive[$i] _ & "\" & $aFolderList[$j] & "\" & $aChildFolderList[$k] & @CRLF & "Удалить папку ?" & @CRLF & $aDrive[$i] & "\" & $aFolderList[$j]) ;If $iMsg=6 Then FileRecycle ( $aDrive[$i] & "\" & $aFolderList[$j] ); при удалении расскомментировать Next Next Next |
Последний раз редактировалось gregaz, 22-10-2010 в 23:07. Отправлено: 21:33, 22-10-2010 | #4 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата gregaz:
Аналогичная ошибка и во второй задаче. Назначение цикла (For $jk=1) мне не очень ясно, т.к., нужно удалять только одну папку (второй такой быть не может) и она уже определена вне этого цикла ($aDrive[$i] & "\" & $aFolderList[$j]) |
||
Отправлено: 22:32, 22-10-2010 | #5 |
![]() Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать Цитата gora:
#Include<File.au3> $sFolderName="i386" $sFileName="filterpipelineprintproc.dll" $aDrive= DriveGetDrive( "all" ) For $i=1 To UBound($aDrive)-1 $aFolderList=_FileListToArray($aDrive[$i], "*", 2) If Not IsArray($aFolderList) Then ContinueLoop For $j=1 To UBound($aFolderList)-1 $aChildFolderList=_FileListToArray($aDrive[$i] & "\" & $aFolderList[$j],$sFolderName, 2); !!!!!!!!!!!!!!!!!!!!!!!!!!!!! If Not IsArray($aChildFolderList) Then ContinueLoop $sFindedFile = FileFindFirstFile($aDrive[$i] & "\" & $aFolderList[$j] & "\" & $aChildFolderList[1] & "\" & $sFileName) FileClose($sFindedFile) If $sFindedFile =-1 Then ExitLoop $sFindedFolder=$aDrive[$i] & "\" & $aFolderList[$j] & "\" & $aChildFolderList[1] $iMsg=MsgBox(4,'Удаляемая папка',"Файл :" & $sFileName & @CRLF & "Найден в папке : " & $aDrive[$i] _ & "\" & $aFolderList[$j] & "\" & $aChildFolderList[1] & @CRLF & "Удалить папку ?" & @CRLF & $aDrive[$i] & "\" & $aFolderList[$j]) If $iMsg=6 Then FileRecycle ( $aDrive[$i] & "\" & $aFolderList[$j] ); при удалении расскомментировать Next Next $aFileList=_FileListToArray(@TempDir, "dd_, ASPNETSetup_, Microsoft*.*", 1) If Not IsArray($aFileList) Then Exit _ArrayDisplay($aFileList) For $i=1 To UBound($aFileList)-1 MsgBox(4,'Найденный файл',$aFileList[$i]) ;FileRecycle ( $aFileList[$i] ); Next #Include<File.au3> $sFolderName="i386" $sFileName="filterpipelineprintproc.dll" $aDrive= DriveGetDrive( "all" ) For $i=1 To UBound($aDrive)-1 $aFolderList=_FileListToArray($aDrive[$i], "*", 2) If Not IsArray($aFolderList) Then ContinueLoop For $j=1 To UBound($aFolderList)-1 $sFindedFolder = FileFindFirstFile($aDrive[$i] & "\" & $aFolderList[$j] & "\" & $sFolderName) FileClose($sFindedFolder) If $sFindedFolder = -1 Then ContinueLoop $sFindedFile = FileFindFirstFile($aDrive[$i] & "\" & $aFolderList[$j] & "\" & $sFolderName& "\" & $sFileName) FileClose($sFindedFile) If $sFindedFile =-1 Then ContinueLoop $sFindedFolder=$aDrive[$i] & "\" & $aFolderList[$j] $iMsg=MsgBox(4,'Удаляемая папка',"Файл :" & $sFileName & @CRLF & "Найден в папке : " & $aDrive[$i] _ & "\" & $aFolderList[$j] & "\" & $sFolderName & @CRLF & "Удалить папку ?" & @CRLF & $aDrive[$i] & "\" & $aFolderList[$j]) If $iMsg=6 Then FileRecycle ( $aDrive[$i] & "\" & $aFolderList[$j] ); при удалении расскомментировать Next Next |
|
Последний раз редактировалось gregaz, 22-10-2010 в 23:47. Отправлено: 23:26, 22-10-2010 | #6 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата gregaz:
PS Все оказалось проще: FileDelete(@TempDir & "\dd_*.*") FileDelete(@TempDir & "\Microsoft*.*") FileDelete(@TempDir & "\ASPNETSetup_*.*") ![]() |
|
Последний раз редактировалось gora, 23-10-2010 в 01:29. Отправлено: 23:55, 22-10-2010 | #7 |
![]() Пользователь Сообщения: 88
|
Профиль | Отправить PM | Цитировать Цитата gora:
Цитата gora:
... $sFilePath=@TempDir & "\" & $aFileList[$i] If StringRegExp($sFilePath,"(dd_| ASPNETSetup_| Microsoft)",0)=1 Then ... #Include<File.au3> $sFolderName="i386" $sFileName="filterpipelineprintproc.dll" $aDrive= DriveGetDrive( "all" ) For $i=1 To UBound($aDrive)-1 $aFolderList=_FileListToArray($aDrive[$i], "*", 2) If Not IsArray($aFolderList) Then ContinueLoop For $j=1 To UBound($aFolderList)-1 $sFolderPath=$aDrive[$i] & "\" & $aFolderList[$j] If FileExists($sFolderPath & "\" & $sFolderName& "\" & $sFileName) Then $iMsg=MsgBox(4,'',"Файл :" & $sFileName & @CRLF & "Найден в папке : " & $sFolderPath & "\" & $sFolderName & @CRLF & "Удалить папку ?" & @CRLF & $sFolderPath) If $iMsg=6 Then FileRecycle ( $sFolderPath ) EndIf Next Next |
||
Последний раз редактировалось gregaz, 23-10-2010 в 07:25. Отправлено: 05:43, 23-10-2010 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Связь батника з инетом | Flashbag | Скриптовые языки администрирования Windows | 1 | 24-05-2010 14:33 | |
CMD/BAT - Изменение схемы питания и ее параметров из батника | alecsandrb | Скриптовые языки администрирования Windows | 3 | 28-09-2009 19:00 | |
CMD/BAT - [решено] Запуск программ из батника | akrav | Скриптовые языки администрирования Windows | 16 | 27-05-2009 00:19 | |
FreeBSD - аналог батника на FreeBSD???? | went | Общий по FreeBSD | 8 | 13-05-2008 15:48 | |
CMD/BAT - Сложность с написанием батника.... 2. | PupsIC | Скриптовые языки администрирования Windows | 1 | 16-09-2007 21:03 |
|