Спасибо,работает
» Командная строка, батники, сценарии (bat, cmd)
Спасибо,работает
Нужно обработать файл проектов Оффлайн браузера. Сам файл обычный, 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]
Проблема: удалить в файле все проекты и папки не содержащие свойство 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]
Zakkazak
Цитата:
Пример:
Код:
@Echo off
Type test.ini |Find /I "Descr=">>tmp.ini
Del /F /Q test.ini
Ren tmp.ini test.ini
Цитата:
Нужно обработать файл проектов Оффлайн браузера
Пример:
Код:
@Echo off
Type test.ini |Find /I "Descr=">>tmp.ini
Del /F /Q test.ini
Ren tmp.ini test.ini
Maza_Faka
спасибо что нашел время,
скрипт отбирает строки начинающиеся на Descr=, и только
Нужно чтоб, скрипт отбирал все секции ([Object]) содержащие строку Descr=.
спасибо что нашел время,
скрипт отбирает строки начинающиеся на Descr=, и только
Нужно чтоб, скрипт отбирал все секции ([Object]) содержащие строку Descr=.
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
)
Не знаю насколько быстро и корректно будет работать, в твоем 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
)
01MDM
Цитата:
Выкладываю файл на рапидшару, может я что-то не так описал:
http://rapidshare.com/files/219831425/WebDown.dat.html
Цитата:
Не знаю насколько быстро и корректно будет работать,Да, подозрительно долго обрабатывает... ждал где-то 5 минут, затем завершил вручную . Не должно быть так долго - размер файла небольшой (150 кб)
Выкладываю файл на рапидшару, может я что-то не так описал:
http://rapidshare.com/files/219831425/WebDown.dat.html
Цитата:
, но секция с "Deskr" удаляется:
если ты не заметил, именно эти секции мне и нужны - они не должы удаляться
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="
Цитата:
именно эти секции мне и нужны - они не должы удаляться
Только с помощью сторонних утилит. Тебе нужены 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="
Нужна помощь:
Есть путь в реестре:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center\Svc\%%A ,
где %%A - ID пользователя, их может быть несколько
На раздел Svc права ограничены даже админам.
Вопрос:
Как дать группе администраторов права на запись в эти разделы (надо вначале стать владельцем раздела) и во всех %%A создать следующий ключ с параметром "EnableNotifications"=dword:00000000 ?
Есть путь в реестре:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security Center\Svc\%%A ,
где %%A - ID пользователя, их может быть несколько
На раздел Svc права ограничены даже админам.
Вопрос:
Как дать группе администраторов права на запись в эти разделы (надо вначале стать владельцем раздела) и во всех %%A создать следующий ключ с параметром "EnableNotifications"=dword:00000000 ?
Здравствуйте..Прочитал страниц 50 ветки но не нашел пока чего нужно мне..Вопрос у меня легкий по сравнению с тем что уже обсуждалось.. Как скопировать в папку все файлы с расширением txt созданные по четным дням недели прошлого года.. пожалуйста помогите оч надо..
01MDM
А как надо проинстолировать SED, чтоб интерпретатор его видел. Инсталятор предложил установить в :\Program Files\GnuWin32\, так и сделал, но скрипт в таком случае не находит SED.
Скопировал sed.exe в :\WINDOWS\system32\ , на этот раз скрипт не выдавал ошибку, но все равно без результата...
Глянь еще разок плз...
А как надо проинстолировать SED, чтоб интерпретатор его видел. Инсталятор предложил установить в :\Program Files\GnuWin32\, так и сделал, но скрипт в таком случае не находит SED.
Скопировал sed.exe в :\WINDOWS\system32\ , на этот раз скрипт не выдавал ошибку, но все равно без результата...
Глянь еще разок плз...
Zakkazak
Если ты sed брал на http://gnuwin32.sourceforge.net/packages/sed.htm, то просто помести сам sed.exe и две dll-ки (libiconv2 и libintl3) в одно из мест, прописанных в переменной %PATH% (посмотреть можно командой `path`) и все должно работать.
Я для сторонних утилит создал отдельный каталог и прописал переменную %PATH% в HKCU\Environment с путем к этому каталогу. Это же можно проделать через свойства "Моего Компьютера", вкладка Дополнительно > Переменные Среды > Переменные среды пользователя.
Если ты sed брал на http://gnuwin32.sourceforge.net/packages/sed.htm, то просто помести сам sed.exe и две dll-ки (libiconv2 и libintl3) в одно из мест, прописанных в переменной %PATH% (посмотреть можно командой `path`) и все должно работать.
Я для сторонних утилит создал отдельный каталог и прописал переменную %PATH% в HKCU\Environment с путем к этому каталогу. Это же можно проделать через свойства "Моего Компьютера", вкладка Дополнительно > Переменные Среды > Переменные среды пользователя.
Цитата:
помести сам sed.exe и две dll-ки (libiconv2 и libintl3) в одно из мест, прописанных в переменной %PATH% (посмотреть можно командой `path`) и все должно работать.
во-во точно так и сделал по интуиции - только без результатно
В WebDown-е из 96 секций должно остаться 6, только в них есть Descr=
увы, число секций не уменьшилось, хотя скрипт работал
P.S.
Сам скрипт поместил в папку обрабатываемого файла. Пробелы из скрипта удалил с помощью сценария Нагуала.
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 ) # если последняя секция ОК
}
Код: 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 ) # если последняя секция ОК
}
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
По-моему, гораздо проще сделать так (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
Zakkazak
Я еще раз проверил, вроде все отрабатывает. А nircmd.exe у тебя есть? И прописан в скрипте жестко полный путь:
Цитата:
Можно конечно его и автоматом определять. Если у тебя батник рядом с обрабатываемыми файлами:
Код:
nircmdc inidelsec "%~f0~WebDown.ini" "Object-%1"
или
nircmdc inidelsec "%cd%\~WebDown.ini" "Object-%1"
Я еще раз проверил, вроде все отрабатывает. А 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"
Спасибо всем за мозговой штурм! Задача минимум выполненна .
01MDM
Цитата:
Rush
Большющий риспект ! Впечатлен возможностью VBS, скрипт парсит файл за доли секунд
Надеюсь что поможешь и в задаче максимум....
01MDM
Цитата:
И прописан в скрипте жестко полный путь:Да, я как-то не заметил, вся проблема была в пути. Скрипт долго выполняется - около 2-х минут в отличии от vbs-скрипта.
nircmdc inidelsec "Full\Path\To\~WebDown.ini" "Object-%1"
Rush
Большющий риспект ! Впечатлен возможностью VBS, скрипт парсит файл за доли секунд
Надеюсь что поможешь и в задаче максимум....
Цитата:
Нужна помощь:
Есть путь в реестре:
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 в следующую строчку после каждой закрывающей скобки - " ] "
А потом просто экспортировать этот файл обратно в реестр.
Или есть еще какой-нибудь способ?!
Zakkazak
Цитата:
Честно говоря, не представляю о чем речь...
Цитата:
Надеюсь что поможешь и в задаче максимум....
Честно говоря, не представляю о чем речь...
Задача максимум
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) в том что, в скрипте использовался не текущий путь, а путь из реестра
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) в том что, в скрипте использовался не текущий путь, а путь из реестра
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
Цитата:
Задача максимум
[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
Rush
Протестил скрипт:
Скрипт убивает процесс, а надо чтоб закрыл программу и ждал пока программа полностью не завершиться. В 1-ом пункте, у программы есть ключ /exit для закрытия.
Желательно чтоб папка Temp создавалась внутри директории, которая береться из реестра.
Также выдаеться ошибка, если в папке Temp уже существует WebDown.dat
Протестил скрипт:
Скрипт убивает процесс, а надо чтоб закрыл программу и ждал пока программа полностью не завершиться. В 1-ом пункте, у программы есть ключ /exit для закрытия.
Желательно чтоб папка Temp создавалась внутри директории, которая береться из реестра.
Также выдаеться ошибка, если в папке Temp уже существует WebDown.dat
всем привет)) у меня есть такая вот задачка:
имеется куча папок
в каждой папке имеется по куче файлов
нужно чтоб в каждой из этих папок было созданы папки скажем "123" и все файлы были перенесены в них т.е если
было C:\1\1\файлы C:\1\1\123\файлы
C:\1\2\файлы C:\1\2\123\файлы
C:\1\3\файлы то чтоб стало так C:\1\3\123\файлы
Плиз)) кто чем поможет , Заранее спасибо)).
имеется куча папок
в каждой папке имеется по куче файлов
нужно чтоб в каждой из этих папок было созданы папки скажем "123" и все файлы были перенесены в них т.е если
было C:\1\1\файлы C:\1\1\123\файлы
C:\1\2\файлы C:\1\2\123\файлы
C:\1\3\файлы то чтоб стало так C:\1\3\123\файлы
Плиз)) кто чем поможет , Заранее спасибо)).
Zakkazak
Цитата:
Я не знаю поведения программы, так как нет ее у меня. Что происходит, если выполнить из комстроки с этим ключем ее запуск? Когда она уже запущена, конечно.
Цитата:
Это я упустил из вида. Надо чтобы переписывался поверх?
[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
Цитата:
Скрипт убивает процесс, а надо чтоб закрыл программу и ждал пока программа полностью не завершиться. В 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
Цитата:
Что происходит, если выполнить из комстроки с этим ключем ее запуск? Когда она уже запущена, конечно.
программа завершаеться, сохраняя результаты работы. Пример из батника:
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
[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
Код:
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
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
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
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
Хреново, когда не на чем проверить...
блин, промазал. Надо подумать...
Добавлено:
[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
Цитата:
Цитата:
Слава Богу! Я аж вспотел...
Добавлено:
Скрипт можно оптимизировать еще - убрать лишние строки
[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
Цитата:
Урра!!! Работает !!!
Цитата:
Ещё раз извиняй за напряг..
Слава Богу! Я аж вспотел...
Добавлено:
Скрипт можно оптимизировать еще - убрать лишние строки
[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, истории становления российского интернета. Сделано для людей.