Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd)

Автор: svradmin
Дата сообщения: 10.04.2009 11:05

Спасибо,работает
Автор: Zakkazak
Дата сообщения: 10.04.2009 14:05
Нужно обработать файл проектов Оффлайн браузера. Сам файл обычный, ini-файл. В файле храниться 2 типа объектов - проекты и папки содержащие их.

Проблема: удалить в файле все проекты и папки не содержащие свойство Descr=

[more=фрагмент файла]Stream 1.2 File
ObjectsCount=96
[Object]
OEVersion=Enterprise 5.3.0.2908
Type=1
Text=<Inbox>
Dir=
Expanded=False
Descr=e1xydGYxXGFuc2lcZGVmZjB7XGZvbnR0Ymx7XGYwXGZzd2lzc1xmY2hhcnNldDAgVGFob21hO317XGYxXGZuaWwgTVMgU2FucyBTZXJpZjt9fQ0KXHZpZXdraW5kNFx1YzFccGFyZFxsYW5nMTAzM1xmMFxmczE2IGFhYWFcbGFuZzEwNDlcZjEgDQpccGFyIH0NCgA=
Count=10
[Object]
Type=0
IID=68503
Caption=Print Page - CLCL Clipboard Manager - Keep more than one item and this for longer
URL=https://www.donationcoder.com/Forums/bb/index.php?action=printpage;topic=2923.0
Minute=10
Weekday=257
LimTSize=10000
LimNumber=5000
LimTime=100
FMGroup=1
CheckSize=True
Once=True
FTText.Exts=aspaspxcfmhtmhtmlhtxidcjspphpphp3phtmlplrxmlshtmlstmstmltexttxtwmlxmlxsp xxxxxxxxxxxxxxxxxxxxx
FTImages.Exts=bmpfifgifipxj2cj2kjp2jpegjpglwfpngswftiftiffwbmwbmpxbm xoxooooxxoxoooooo
FTVideo.Exts=aniasfasxaviflcfliflvm1vm2vmovmpegmpgramrmrvvivvobwmv xxxxxxxxxxxxxxxxxx
FTAudio.Exts=wavriffmp3midmp2m3uravocwmaape
FTArchive.Exts=acearcarjcabgzjarlayleilhapakpdfrartarzzip ooooooooooxxoox
FTUDef.Exts=classcssdtdjsssivbsxsl oxoxooo
FTText.B=ooxooo
FTImages.B=xoxoxo
FTVideo.B=xoxooo
FTAudio.B=xoxoxo
FTArchive.B=xoxooo
FTUDef.B=xoxooo
FTOther.B=xoxoxo
FTSizes=4000,0,3,8,0,0,10000,0,4000,0,0,0,4000,0,4,4,3,3,4,4,4
RSrvsBx=3
RProt=127
LastStart=0:0:0:0:0:0:0:0:
LastEnd=0:0:0:0:0:0:0:0:
SPar=1
SSav=1
SLast=200
SSiz=128192
CopiesFmt=2
CopiesDate=YYMM-DD
NoFileCheck=True
SubstsB=aHR0cCoJaHR0cCoqaHR0cCoJaHR0cCoNCmh0dHA6Ly8qZGF5LmF6Lwlhei9uZXdzLyouaHRtbAlhei9wcmludC9uZXdzLyouaHRtbA0K
ApplyAllSubsts=True
ImgDim=-160,-1000,-120,-1000
LIndexed=False
IndexFiles=False
[Object]
Type=0
IID=68504
Caption=CLCL/????? - ???????[/more]
Автор: Maza_Faka
Дата сообщения: 10.04.2009 16:29
Zakkazak

Цитата:
Нужно обработать файл проектов Оффлайн браузера

Пример:

Код:
@Echo off

Type test.ini |Find /I "Descr=">>tmp.ini
Del /F /Q test.ini
Ren tmp.ini test.ini
Автор: Zakkazak
Дата сообщения: 10.04.2009 18:21
Maza_Faka
спасибо что нашел время,
скрипт отбирает строки начинающиеся на Descr=, и только
Нужно чтоб, скрипт отбирал все секции ([Object]) содержащие строку Descr=.
Автор: 01MDM
Дата сообщения: 10.04.2009 22:03
Zakkazak
Не знаю насколько быстро и корректно будет работать, в твоем ini встречаются специальные символы, которые приводят к ошибке, но секция с "Deskr" удаляется:

Код:
@echo off
setlocal

for /f "tokens=1,2 delims=:" %%i in ('findstr /n "\[" 1.ini') do call:parse %%i %%j
move 1.tmp 1.ini
goto:eof

:parse
for /f "tokens=*" %%i in ('more +%1 1.ini') do (
echo %%i | findstr "\[" 1>nul && goto:next
echo %%i | findstr "Descr=.*" 1>nul && goto:eof
)

:next
echo %2 1>>1.tmp
for /f "tokens=*" %%i in ('more +%1 1.ini') do (
echo %%i | findstr "\[" 1>nul && goto:eof || echo %%i 1>>1.tmp
)
Автор: Zakkazak
Дата сообщения: 11.04.2009 00:45
01MDM

Цитата:
Не знаю насколько быстро и корректно будет работать,
Да, подозрительно долго обрабатывает... ждал где-то 5 минут, затем завершил вручную . Не должно быть так долго - размер файла небольшой (150 кб)

Выкладываю файл на рапидшару, может я что-то не так описал:
http://rapidshare.com/files/219831425/WebDown.dat.html
Автор: Zakkazak
Дата сообщения: 11.04.2009 10:05

Цитата:
, но секция с "Deskr" удаляется:

если ты не заметил, именно эти секции мне и нужны - они не должы удаляться
Автор: 01MDM
Дата сообщения: 11.04.2009 13:45
Zakkazak

Цитата:
именно эти секции мне и нужны - они не должы удаляться


Только с помощью сторонних утилит. Тебе нужены sed и nircmd. Штатными средствами сложный ini не отпарсить.
Здесь тоже возможны ошибки, некогда проверять:

Код:
@echo off
setlocal

copy WebDown.dat ~WebDown.ini

for /f "tokens=1 delims=:" %%i in ('findstr /n /c:"[Object]" ~WebDown.ini') do (
call:sec %%i
)

for /f "tokens=1 delims=:" %%i in ('findstr /n "\<Descr=.*" ~WebDown.ini') do (
call:find %%i
)

set "sections=%sections:~1%"
for /l %%i in (1,1,%cnt%) do (
for %%j in (%sections%) do if %%j==%%i (set "del=no")
call:del %%i
)

sed -i "s/\[Object-.*\]/\[Object\]/" ~WebDown.ini
type ~WebDown.ini | more 1>WebDown.ini
del ~WebDown.ini

:: Расскоментируй, если результат устраивает
:: move WebDown.ini WebDown.dat
goto:eof

:sec
set /a cnt+=1
sed -i "%1 s/\[Object\]/\[Object-%cnt%\]/" ~WebDown.ini
goto:eof

:find
for /f "tokens=2 delims=-]" %%i in ('
more +%1 ~WebDown.ini ^| findstr "\[Object-.*\]" 2^>nul
') do (
set /a num=%%i-1
goto:set
)

:set
set "sections=%sections%,%num%"
goto:eof

:del
if not "%del%"=="no" (
nircmdc inidelsec "Full\Path\To\~WebDown.ini" "Object-%1"
)
set "del="
Автор: guru431
Дата сообщения: 11.04.2009 15:50
Нужна помощь:

Есть путь в реестре:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center\Svc\%%A ,
где %%A - ID пользователя, их может быть несколько
На раздел Svc права ограничены даже админам.

Вопрос:
Как дать группе администраторов права на запись в эти разделы (надо вначале стать владельцем раздела) и во всех %%A создать следующий ключ с параметром "EnableNotifications"=dword:00000000 ?
Автор: FROST20
Дата сообщения: 11.04.2009 21:43
Здравствуйте..Прочитал страниц 50 ветки но не нашел пока чего нужно мне..Вопрос у меня легкий по сравнению с тем что уже обсуждалось.. Как скопировать в папку все файлы с расширением txt созданные по четным дням недели прошлого года.. пожалуйста помогите оч надо..
Автор: Zakkazak
Дата сообщения: 11.04.2009 22:10
01MDM
А как надо проинстолировать SED, чтоб интерпретатор его видел. Инсталятор предложил установить в :\Program Files\GnuWin32\, так и сделал, но скрипт в таком случае не находит SED.
Скопировал sed.exe в :\WINDOWS\system32\ , на этот раз скрипт не выдавал ошибку, но все равно без результата...
Глянь еще разок плз...
Автор: 01MDM
Дата сообщения: 11.04.2009 23:13
Zakkazak
Если ты sed брал на http://gnuwin32.sourceforge.net/packages/sed.htm, то просто помести сам sed.exe и две dll-ки (libiconv2 и libintl3) в одно из мест, прописанных в переменной %PATH% (посмотреть можно командой `path`) и все должно работать.

Я для сторонних утилит создал отдельный каталог и прописал переменную %PATH% в HKCU\Environment с путем к этому каталогу. Это же можно проделать через свойства "Моего Компьютера", вкладка Дополнительно > Переменные Среды > Переменные среды пользователя.
Автор: Zakkazak
Дата сообщения: 12.04.2009 00:49

Цитата:
помести сам sed.exe и две dll-ки (libiconv2 и libintl3) в одно из мест, прописанных в переменной %PATH% (посмотреть можно командой `path`) и все должно работать.

во-во точно так и сделал по интуиции - только без результатно

В WebDown-е из 96 секций должно остаться 6, только в них есть Descr=
увы, число секций не уменьшилось, хотя скрипт работал

P.S.
Сам скрипт поместил в папку обрабатываемого файла. Пробелы из скрипта удалил с помощью сценария Нагуала.
Автор: NvvLazyTiger
Дата сообщения: 12.04.2009 05:52
Zakkazak Скрипт на AWK (WebDown.Awk):
Код: BEGIN{
# a2save # массив сохраняемых строк
f2save=0 # флаг "сохранять секцию"
n2save=0 # счётчик сохраняемых строк
}

function d2save ( j ) { # выдача сохранённой секции на StdOut
print "[Object]" # шапка секции
for ( n=1; n<=j; n++ ) print a2save[ n ]
return 0
}

{ # просмотр строк входного файла
if ( $0 == "[Object]" ) { # если это шапка, то
if ( f2save ) d2save( n2save ) # если предыдущая секция ОК
f2save=0 # скинем счётчик
n2save=0 # скинем флаг
} else {
if ( substr( $0, 1, 6 ) == "Descr=" ) f2save++ #взведём флаг
n2save++ # увеличим счётчик
a2save[ n2save ] = $0 # запомним строку
}
}

END{
if ( f2save ) d2save( n2save ) # если последняя секция ОК
}
Автор: Rush
Дата сообщения: 12.04.2009 07:30
Zakkazak
По-моему, гораздо проще сделать так (VBS):

Код:
fname = "WebDown.dat":fname2 = "WebDown.ok"
set fso = createobject("scripting.filesystemobject")
set txtfile = fso.opentextfile(fname)
txt = txtfile.readall:txtfile.close
arr = split(txt,"[Object]"):arrdesc = filter(arr,"Descr=")
str = left(arr(0),instr(arr(0),"ObjectsCount=")+12) & cstr(ubound(arrdesc)+1) & vbcrlf
set txtfile = fso.opentextfile(fname2,2,true)
txtfile.write str & "[Object]" & join(arrdesc,"[Object]"):txtfile.close

Автор: 01MDM
Дата сообщения: 12.04.2009 07:42
Zakkazak
Я еще раз проверил, вроде все отрабатывает. А nircmd.exe у тебя есть? И прописан в скрипте жестко полный путь:

Цитата:

nircmdc inidelsec "Full\Path\To\~WebDown.ini" "Object-%1"

Можно конечно его и автоматом определять. Если у тебя батник рядом с обрабатываемыми файлами:

Код:
nircmdc inidelsec "%~f0~WebDown.ini" "Object-%1"

или

nircmdc inidelsec "%cd%\~WebDown.ini" "Object-%1"
Автор: Zakkazak
Дата сообщения: 12.04.2009 12:36
Спасибо всем за мозговой штурм! Задача минимум выполненна .

01MDM

Цитата:
И прописан в скрипте жестко полный путь:
nircmdc inidelsec "Full\Path\To\~WebDown.ini" "Object-%1"
Да, я как-то не заметил, вся проблема была в пути. Скрипт долго выполняется - около 2-х минут в отличии от vbs-скрипта.

Rush
Большющий риспект ! Впечатлен возможностью VBS, скрипт парсит файл за доли секунд
Надеюсь что поможешь и в задаче максимум....
Автор: guru431
Дата сообщения: 12.04.2009 14:30

Цитата:
Нужна помощь:

Есть путь в реестре:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center\Svc\%%A ,
где %%A - ID пользователя, их может быть несколько
На раздел Svc права ограничены даже админам.

Вопрос:
Как дать группе администраторов права на запись в эти разделы (надо вначале стать владельцем раздела) и во всех %%A создать следующий ключ с параметром "EnableNotifications"=dword:00000000 ?


C правами разобрался, осталось только добавить ключи.

Может кто-нибудь всё-таки знает???

Может, если не получается напрямую, то использовать:
REG EXPORT "HKLM\SOFTWARE\Microsoft\Security Center\Svc" Key.reg
Файл будет выглядеть так:

Цитата:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center\Svc]
"AntiVirusOverride"=dword:00000000
"AntiSpywareOverride"=dword:00000000
"FirewallOverride"=dword:00000000
"VistaSp1"=hex(b):b2,e0,d6,23,d7,5b,c8,01

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center\Svc\S-1-5-21-688301636-752684984-1148191595-1003]
"EnableNotificationsRef"=dword:00000002

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center\Svc\S-1-5-21-688301636-752684984-1148191595-500]
"EnableNotificationsRef"=dword:00000004

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center\Svc\Vol]

добавить в этот файл "EnableNotifications"=dword:00000000 в следующую строчку после каждой закрывающей скобки - " ] "
А потом просто экспортировать этот файл обратно в реестр.

Или есть еще какой-нибудь способ?!
Автор: Rush
Дата сообщения: 12.04.2009 15:42
Zakkazak

Цитата:
Надеюсь что поможешь и в задаче максимум....

Честно говоря, не представляю о чем речь...
Автор: Zakkazak
Дата сообщения: 12.04.2009 18:15
Задача максимум

1)Нужно чтоб скрипт сперва посмотрел запущен ли OE.exe, если запущен закрыл бы OE.exe
"%ProgramFiles%\Offline Explorer Enterprise\OE.exe" /exit

2)после зарытия OE.exe, скрипт смотрит в реестр:
hkcu\Software\MetaProducts\Offline Explorer MX\Parameters
берёт из строкового параметра CurrentDir значение (путь где храниться WebDown.dat)
3) Далее в скрипте который ты написал будет использоваться этот путь из пункта 2

4)После парсинга, WebDown.dat перемещается в .\Temp\ . Нужно чтоб OE.exe запустился с базой WebDown.ok. Для этого у него должно быть расширение .dat. Переименовывает
5)После этого запускаеться "%ProgramFiles%\Offline Explorer Enterprise\OE.exe"


Смысл пунктов 2) и 3) в том что, в скрипте использовался не текущий путь, а путь из реестра
Автор: Rush
Дата сообщения: 12.04.2009 20:36
Zakkazak

Цитата:
Задача максимум

[more=Как-то так, наверное...]

Код:
appname = "OE.exe"
key = "HKCU\Software\MetaProducts\Offline Explorer MX\Parameters\CurrentDir"
ProgramFilesPath = createobject("wscript.shell").expandenvironmentstrings("%ProgramFiles%")
TerminateApp appname
fileWD = ReadPath(key) & "\WebDown.dat"
DelObjects fileWD, fileWD
RunApp ProgramFilesPath & "\Offline Explorer Enterprise\OE.exe"

sub DelObjects(fname, fname2)
set fso = createobject("scripting.filesystemobject")
set txtfile = fso.opentextfile(fname)
txt = txtfile.readall
txtfile.close
fso.MoveFile fname, fso.GetSpecialFolder(2) & "\"
arr = split(txt,"[Object]")
arrdesc = filter(arr,"Descr=")
str = left(arr(0),instr(arr(0),"ObjectsCount=")+12) & cstr(ubound(arrdesc)+1) & vbcrlf
set txtfile = fso.opentextfile(fname2,2,true)
txtfile.write str & "[Object]" & join(arrdesc,"[Object]")
txtfile.close
end sub

sub TerminateApp(appname)
set srv = getobject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
servname = "select * from win32_process where name = '" & appname & "'"
set procs = srv.execquery(servname)
for each proc in procs
proc.terminate
next
end sub

function ReadPath(key)
set wshshell = createobject("wscript.shell")
ReadPath = wshshell.regread(key)
end function

sub RunApp(app)
set shapp = createobject("shell.application")
shapp.shellexecute app
end sub
Автор: Zakkazak
Дата сообщения: 12.04.2009 22:53
Rush
Протестил скрипт:

Скрипт убивает процесс, а надо чтоб закрыл программу и ждал пока программа полностью не завершиться. В 1-ом пункте, у программы есть ключ /exit для закрытия.
Желательно чтоб папка Temp создавалась внутри директории, которая береться из реестра.
Также выдаеться ошибка, если в папке Temp уже существует WebDown.dat

Автор: TruLander100
Дата сообщения: 13.04.2009 01:16
всем привет)) у меня есть такая вот задачка:
имеется куча папок
в каждой папке имеется по куче файлов
нужно чтоб в каждой из этих папок было созданы папки скажем "123" и все файлы были перенесены в них т.е если
было C:\1\1\файлы C:\1\1\123\файлы
C:\1\2\файлы C:\1\2\123\файлы
C:\1\3\файлы то чтоб стало так C:\1\3\123\файлы
Плиз)) кто чем поможет , Заранее спасибо)).
Автор: Rush
Дата сообщения: 13.04.2009 13:01
Zakkazak

Цитата:
Скрипт убивает процесс, а надо чтоб закрыл программу и ждал пока программа полностью не завершиться. В 1-ом пункте, у программы есть ключ /exit для закрытия.

Я не знаю поведения программы, так как нет ее у меня. Что происходит, если выполнить из комстроки с этим ключем ее запуск? Когда она уже запущена, конечно.

Цитата:
Также выдаеться ошибка, если в папке Temp уже существует WebDown.dat

Это я упустил из вида. Надо чтобы переписывался поверх?

[more=Попробуй так...]

Код:
appname = "OE.exe"
key = "HKCU\Software\MetaProducts\Offline Explorer MX\Parameters\CurrentDir"
ProgramFilesPath = createobject("wscript.shell").expandenvironmentstrings("%ProgramFiles%")
' TerminateApp appname
RunApp ProgramFilesPath & "\Offline Explorer Enterprise\OE.exe", "/exit"
pathDir = ReadPath(key)
fileWD = pathDir & "\WebDown.dat"
DelObjects fileWD, pathDir
RunApp ProgramFilesPath & "\Offline Explorer Enterprise\OE.exe"

sub DelObjects(fname, path)
set fso = createobject("scripting.filesystemobject")
set txtfile = fso.opentextfile(fname)
txt = txtfile.readall
txtfile.close
if not fso.folderexists(path & "\Temp") then fso.createfolder path & "\Temp"
set shapp = createobject("shell.application")
shapp.namespace(path & "\Temp").movehere fname, 16
arr = split(txt,"[Object]")
arrdesc = filter(arr,"Descr=")
str = left(arr(0),instr(arr(0),"ObjectsCount=")+12) & cstr(ubound(arrdesc)+1) & vbcrlf
set txtfile = fso.opentextfile(fname, 2, true)
txtfile.write str & "[Object]" & join(arrdesc,"[Object]")
txtfile.close
end sub

sub TerminateApp(appname)
set srv = getobject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
servname = "select * from win32_process where name = '" & appname & "'"
set procs = srv.execquery(servname)
for each proc in procs
proc.terminate
next
end sub

function ReadPath(key)
set wshshell = createobject("wscript.shell")
ReadPath = wshshell.regread(key)
end function

sub RunApp(app)
set shapp = createobject("shell.application")
shapp.shellexecute app
end sub
Автор: Zakkazak
Дата сообщения: 13.04.2009 14:09

Цитата:
Что происходит, если выполнить из комстроки с этим ключем ее запуск? Когда она уже запущена, конечно.

программа завершаеться, сохраняя результаты работы. Пример из батника:
start /wait "" "%ProgramFiles%\Offline Explorer Enterprise\OE.exe" /exit

Цитата:
Надо чтобы переписывался поверх?

Ага

Выдает ошибку

Цитата:
Script: f:\Setts\Application Data\Offline Explorer2\descrRush.vbs
Line:    5
Char:    1
Error:    Wrong number of arguments or invalid property assignment: 'RunApp'
Code:    800A01C2
Source:     Microsoft VBScript runtime error

Автор: Rush
Дата сообщения: 13.04.2009 14:10
[more=Или так...]

Код:
appname = "OE.exe"
key = "HKCU\Software\MetaProducts\Offline Explorer MX\Parameters\CurrentDir"
ProgramFilesPath = createobject("wscript.shell").expandenvironmentstrings("%ProgramFiles%")
'TerminateApp appname
RunApp ProgramFilesPath & "\Offline Explorer Enterprise\OE.exe /exit"
if CheckClose then
pathDir = ReadPath(key)
fileWD = pathDir & "\WebDown.dat"
DelObjects fileWD, pathDir
RunApp ProgramFilesPath & "\Offline Explorer Enterprise\OE.exe"
end if

sub DelObjects(fname, path)
set fso = createobject("scripting.filesystemobject")
set txtfile = fso.opentextfile(fname)
txt = txtfile.readall
txtfile.close
if not fso.folderexists(path & "\Temp") then fso.createfolder path & "\Temp"
set shapp = createobject("shell.application")
shapp.namespace(path & "\Temp").movehere fname, 16
arr = split(txt,"[Object]")
arrdesc = filter(arr,"Descr=")
str = left(arr(0),instr(arr(0),"ObjectsCount=")+12) & cstr(ubound(arrdesc)+1) & vbcrlf
set txtfile = fso.opentextfile(fname, 2, true)
txtfile.write str & "[Object]" & join(arrdesc,"[Object]")
txtfile.close
end sub

sub TerminateApp(appname)
set srv = getobject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
servname = "select * from win32_process where name = '" & appname & "'"
set procs = srv.execquery(servname)
for each proc in procs
proc.terminate
next
end sub

function ReadPath(key)
set wshshell = createobject("wscript.shell")
ReadPath = wshshell.regread(key)
end function

sub RunApp(app)
set shapp = createobject("shell.application")
shapp.shellexecute app
end sub

function CheckClose(appname)
set srv = getobject("winmgmts:{impersonationlevel=impersonate}!\\.\root\cimv2")
servname = "select * from __instancedeletionevent " _
& "within 1 where targetinstance isa 'win32_process' " _
& "and targetinstance.name='" & appname & "'"
set mon = srv.execnotificationquery(servname)
set app = mon.nextevent
CheckClose = true
end function

Автор: Zakkazak
Дата сообщения: 13.04.2009 14:39
Windows cannot find 'E:\Program Files\Offline Explorer Enterprise\OE.exe /exit'. Make sure you typed the name correctly, and then try again. To search for a file, click the Start button, and then click Search.

Script:    f:\Setts\Application Data\Offline Explorer2\descrRush.vbs
Line:    6
Char:    1
Error:    Wrong number of arguments or invalid property assignment: 'CheckClose'
Code:    800A01C2
Source:     Microsoft VBScript runtime error
Автор: Rush
Дата сообщения: 13.04.2009 15:04
Zakkazak
Хреново, когда не на чем проверить...

блин, промазал. Надо подумать...

Добавлено:
[more=Пробуй]

Код:
appname = "OE.exe"
key = "HKCU\Software\MetaProducts\Offline Explorer MX\Parameters\CurrentDir"
set wshshell = createobject("wscript.shell")
ProgramFilesPath = wshshell.expandenvironmentstrings("%ProgramFiles%")
wshshell.run """" & ProgramFilesPath & "\Offline Explorer Enterprise\OE.exe" & """" & " /exit", , true
pathDir = ReadPath(key)
fileWD = pathDir & "\WebDown.dat"
DelObjects fileWD, pathDir
wshshell.run """" & ProgramFilesPath & "\Offline Explorer Enterprise\OE.exe" & """"
wscript.quit

sub DelObjects(fname, path)
set fso = createobject("scripting.filesystemobject")
set txtfile = fso.opentextfile(fname)
txt = txtfile.readall
txtfile.close
if not fso.folderexists(path & "\Temp") then fso.createfolder path & "\Temp"
set shapp = createobject("shell.application")
shapp.namespace(path & "\Temp").movehere fname, 16
arr = split(txt,"[Object]")
arrdesc = filter(arr,"Descr=")
str = left(arr(0),instr(arr(0),"ObjectsCount=")+12) & cstr(ubound(arrdesc)+1) & vbcrlf
set txtfile = fso.opentextfile(fname, 2, true)
txtfile.write str & "[Object]" & join(arrdesc,"[Object]")
txtfile.close
end sub

function ReadPath(key)
set wshshell = createobject("wscript.shell")
ReadPath = wshshell.regread(key)
end function
Автор: Zakkazak
Дата сообщения: 13.04.2009 15:25

Цитата:
Хреново, когда не на чем проверить...

Извиняй за неудобства..

Добавлено:
Урра!!! Работает !!! мени сенкс
Твое славное имя будет увековеченно в соответствующем топике
Ещё раз извиняй за напряг..
Автор: Rush
Дата сообщения: 13.04.2009 15:38
Zakkazak

Цитата:
Урра!!! Работает !!!


Цитата:
Ещё раз извиняй за напряг..

Слава Богу! Я аж вспотел...

Добавлено:
Скрипт можно оптимизировать еще - убрать лишние строки
[more]
Код: key = "HKCU\Software\MetaProducts\Offline Explorer MX\Parameters\CurrentDir"
set wshshell = createobject("wscript.shell")
ProgramFilesPath = wshshell.expandenvironmentstrings("%ProgramFiles%")
wshshell.run """" & ProgramFilesPath & "\Offline Explorer Enterprise\OE.exe" & """" & " /exit", , true
pathDir = wshshell.regread(key)
fileWD = pathDir & "\WebDown.dat"
DelObjects fileWD, pathDir
wshshell.run """" & ProgramFilesPath & "\Offline Explorer Enterprise\OE.exe" & """"
wscript.quit

sub DelObjects(fname, path)
set fso = createobject("scripting.filesystemobject")
set txtfile = fso.opentextfile(fname)
txt = txtfile.readall
txtfile.close
if not fso.folderexists(path & "\Temp") then fso.createfolder path & "\Temp"
set shapp = createobject("shell.application")
shapp.namespace(path & "\Temp").movehere fname, 16
arr = split(txt,"[Object]")
arrdesc = filter(arr,"Descr=")
str = left(arr(0),instr(arr(0),"ObjectsCount=")+12) & cstr(ubound(arrdesc)+1) & vbcrlf
set txtfile = fso.opentextfile(fname, 2, true)
txtfile.write str & "[Object]" & join(arrdesc,"[Object]")
txtfile.close
end sub

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: SAS.Планета (часть 2)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.