Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 8

Автор: boy999
Дата сообщения: 03.07.2010 06:41

Цитата:
в виндах автозапуск с флэшки выключен.


Как включить!?
Автор: mugil_cephalus
Дата сообщения: 03.07.2010 07:54
boy999
res2001

Цитата:
Видимо в виндах автозапуск с флэшки выключен.

кажется он дефолтно - включен
не знаю, у меня с cd автозапускается
тоже самое с floppy - не запучкается
флешки под рукой нет, но недавно вирус с таким же кодом пытался запуститься с флешки, но его norton перехватил

попробуй :
[autorun]
open=explorer /e,%systemroot%
icon=myuserpic.ico
и кинь в корень файл myuserpic.ico

p.s.
hstart.exe запускать не нужно, должен сработать autorun ( а если autorun сработает праильно - мы вообще ничего не увидим , как ты и хотел - hidden mode ; если autorun - работает , попробуй для отладки ключ /msg - если все ок - потом удалишь этот ключ hstart'a )
p.p.s.
и, вообще, какая у тебя ось ?
Автор: boy999
Дата сообщения: 03.07.2010 09:36

Цитата:
[autorun]
open=explorer /e,%systemroot%
icon=myuserpic.ico
и кинь в корень файл myuserpic.ico


Сделал так в авторане, и что?
Винда - ХР sp3.
Автор: Engraf
Дата сообщения: 03.07.2010 10:54
wolf0425

Цитата:
а у меня - единожды. точно ничего не перепутал в условиях?

[more=Вот точный код батника]set "strNum="
set "strAcc="
for /F "usebackq tokens=1* delims=:" %%A in (`findstr /L "user_pref(\"mail.accountmanager.accounts\"" temp.txt`) do (set strNum=%%A&set strAcc=%%B)
set /A strNum=%strNum%-1
for /L %%i in (1,1,%strNum%) do (
    for /F "usebackq tokens=1* delims=:" %%A in (`findstr /B /L %%i: temp.txt`) do (call :DELNUM "%%B" temp2.txt)
)
goto :EOF
:DELNUM
echo %1[/more]
[more=Вот кусок файла, из к-го берутся строки]1:# Mozilla User Preferences
2:
3:/* Do not edit this file.
4: *
5: * If you make changes to this file while the application is running,
6: * the changes will be overwritten when the application exits.
7: *
8: * To make a manual change to preferences, you can visit the URL about:config
9: * For more information, see http://www.mozilla.org/unix/customizing.html#prefs
10: */
11:
12:user_pref("accessibility.typeaheadfind.flashBar", 0);
13:user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1277727974);[/more]
[more=А это вывод консоли во время исполнения батника]D:\>set "strNum="
D:\>set "strAcc="
D:\>for /F "usebackq tokens=1* delims=:" %A in (`findstr /L "user_pref(\"mail.accountmanager.accounts\"" temp.txt`) do (set strNum=%A & set strAcc=%B )
D:\>(set strNum=76 & set strAcc=user_pref("mail.accountmanager.accounts", "account2,account3,account1,account4,account5,account6,account7,account8,account9,account10,account11"); )
D:\>(set strNum=76 & set strAcc=user_pref("mail.accountmanager.accounts", "account2,account3,account1,account4,account5,account6,account7,account8,account9,account10,account11"); )
D:\>set /A strNum=76-1
D:\>for /L %i in (1 1 75) do (for /F "usebackq tokens=1* delims=:" %A in (`findstr /B /L %i: temp.txt`) do (call :DELNUM "%B" temp2.txt ) )
D:\>(for /F "usebackq tokens=1* delims=:" %A in (`findstr /B /L 1: temp.txt`) do (call :DELNUM "%B" temp2.txt ) )
D:\>(call :DELNUM "# Mozilla User Preferences" temp2.txt )
D:\>echo "# Mozilla User Preferences"
"# Mozilla User Preferences"
D:\>(call :DELNUM "# Mozilla User Preferences" temp2.txt )
D:\>echo "# Mozilla User Preferences"
"# Mozilla User Preferences"
D:\>(for /F "usebackq tokens=1* delims=:" %A in (`findstr /B /L 2: temp.txt`) do (call :DELNUM "%B" temp2.txt ) )
D:\>(call :DELNUM "" temp2.txt )
D:\>echo ""
""
D:\>(call :DELNUM "" temp2.txt )
D:\>echo ""
""
D:\>(for /F "usebackq tokens=1* delims=:" %A in (`findstr /B /L 3: temp.txt`) do (call :DELNUM "%B" temp2.txt ) )
D:\>(call :DELNUM "/* Do not edit this file." temp2.txt )
D:\>echo "/* Do not edit this file."
"/* Do not edit this file."
D:\>(call :DELNUM "/* Do not edit this file." temp2.txt )
D:\>echo "/* Do not edit this file."
"/* Do not edit this file."
D:\>(for /F "usebackq tokens=1* delims=:" %A in (`findstr /B /L 4: temp.txt`) do (call :DELNUM "%B" temp2.txt ) )
D:\>(call :DELNUM " *" temp2.txt )
D:\>echo " *"
" *"
D:\>(call :DELNUM " *" temp2.txt )
D:\>echo " *"
" *"
D:\>(for /F "usebackq tokens=1* delims=:" %A in (`findstr /B /L 5: temp.txt`) do (call :DELNUM "%B" temp2.txt ) )
D:\>(call :DELNUM " * If you make changes to this file while the application is running," temp2.txt )
D:\>echo " * If you make changes to this file while the application is running,"
" * If you make changes to this file while the application is running,"
D:\>(call :DELNUM " * If you make changes to this file while the application is running," temp2.txt )
D:\>echo " * If you make changes to this file while the application is running,"
" * If you make changes to this file while the application is running,"
D:\>(for /F "usebackq tokens=1* delims=:" %A in (`findstr /B /L 6: temp.txt`) do (call :DELNUM "%B" temp2.txt ) )
D:\>(call :DELNUM " * the changes will be overwritten when the application exits." temp2.txt )
D:\>echo " * the changes will be overwritten when the application exits."
" * the changes will be overwritten when the application exits."
D:\>(call :DELNUM " * the changes will be overwritten when the application exits." temp2.txt )
D:\>echo " * the changes will be overwritten when the application exits."
" * the changes will be overwritten when the application exits."
D:\>(for /F "usebackq tokens=1* delims=:" %A in (`findstr /B /L 7: temp.txt`) do (call :DELNUM "%B" temp2.txt ) )
D:\>(call :DELNUM " *" temp2.txt )
D:\>echo " *"
" *"
D:\>(call :DELNUM " *" temp2.txt )
D:\>echo " *"
" *"[/more]

Вообщем, не знаю что и думать... Даже перегрузил комп на всякий - не помогло.
Автор: Elroir
Дата сообщения: 03.07.2010 11:04
bomzzz

Цитата:
как же сделать включалку отключалку для видимости зарегистрированных расширений

Посмотри здесь
Автор: res2001
Дата сообщения: 03.07.2010 11:41
Engraf

Цитата:
Вот кусок файла, из к-го берутся строки

В приведенном куске нет строки, которую ты ищешь в батнике. Ну да ладно.
У меня выводится по одной строке.
Может ты в начало батника вставишь @echo off и после этого покажешь вывод?
Автор: Engraf
Дата сообщения: 03.07.2010 12:06
res2001

Цитата:
Может ты в начало батника вставишь @echo off и после этого покажешь вывод?

[more=собственно вот...]"# Mozilla User Preferences"
"# Mozilla User Preferences"
""
""
"/* Do not edit this file."
"/* Do not edit this file."
" *"
" *"
" * If you make changes to this file while the application is running,"
" * If you make changes to this file while the application is running,"
" * the changes will be overwritten when the application exits."
" * the changes will be overwritten when the application exits."
" *"
" *"
" * To make a manual change to preferences, you can visit the URL about:config"
" * To make a manual change to preferences, you can visit the URL about:config"
" * For more information, see http://www.mozilla.org/unix/customizing.html#prefs"
" * For more information, see http://www.mozilla.org/unix/customizing.html#prefs"
" */"
" */"
""
""
"user_pref("accessibility.typeaheadfind.flashBar", 0);"
"user_pref("accessibility.typeaheadfind.flashBar", 0);"
"user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1277727974);"
"user_pref("app.update.lastUpdateTime.addon-background-update-timer", 1277727974);"
"user_pref("app.update.lastUpdateTime.background-update-timer", 1277727932);"
"user_pref("app.update.lastUpdateTime.background-update-timer", 1277727932);"
"user_pref("app.update.lastUpdateTime.blocklist-background-update-timer", 1277727624);"
"user_pref("app.update.lastUpdateTime.blocklist-background-update-timer", 1277727624);"
"user_pref("app.update.never.3.1", false);"
"user_pref("app.update.never.3.1", false);"[/more]

Добавлено: кодировка файла-источника UTF-8, может тут где-то собака зарыта?
Автор: res2001
Дата сообщения: 03.07.2010 12:15
boy999

Цитата:
Как включить!?

http://social.technet.microsoft.com/Forums/ru-RU/xpru/thread/220f7a41-85b7-4cde-bdd3-339407a789c6
Engraf
Забавно и не понятно. Такое впечатление что у тебя эхо валит и в stdout и в stderr одновременно, что в итоге дает такой вот эффект.
попробуй так в качестве эксперимента:

Код: :DELNUM
1>>ok.txt 2>>err.txt echo %1
Автор: Engraf
Дата сообщения: 03.07.2010 12:20
res2001

Цитата:
и расскажи что будет в файлах ok.txt и err.txt.

err.txt - пустой
ok.txt - то же, что и раньше (по 2 строки)

Цитата:
кодировка файла-источника UTF-8, может тут где-то собака зарыта?

Автор: res2001
Дата сообщения: 03.07.2010 12:24
Engraf
а это:

Цитата:
Ну и еще в качестве эксперимента, сделай другой батник с любым выводом echo.
Будут в этом случае двойные строки?



Добавлено:
Engraf
попробуй такой вариант:

Код: @echo off
setlocal ENABLEDELAYEDEXPANSION
set "strNum="
set "strAcc="
for /F "usebackq tokens=1* delims=:" %%A in (`findstr /l "user_pref(\"mail.accountmanager.accounts\"" temp.txt`) do (
    set strNum=%%A
    set strAcc=%%B
)
set /A strNum=%strNum%-1
set /a "count=1"
set /a "count1=1"
for /L %%i in (1,1,%strNum%) do (
set /a "count+=1"
for /F "usebackq tokens=1* delims=:" %%A in (`findstr /B /L %%i: temp.txt`) do (set /a "count1+=1" & call :DELNUM "%%B" temp2.txt !count! !count1!)
)
goto :EOF
:DELNUM
echo %*
Автор: Engraf
Дата сообщения: 03.07.2010 12:53

Цитата:
Ну и еще в качестве эксперимента, сделай другой батник с любым выводом echo.

Тут все норм.
bat'ник:
Код: @echo off
for /f "usebackq tokens=1 delims==" %%A in (`set`) do call :VIVOD %%A
goto :EOF
:VIVOD
echo %1
Автор: res2001
Дата сообщения: 03.07.2010 13:03
Engraf

Цитата:
Тут опять дублируются:

Не дублируется! Почему то внутренний цикл отрабатывает 2 раза.
Автор: Engraf
Дата сообщения: 03.07.2010 13:08
res2001
Ну, я про это собственно и говорил в самом начале.
Автор: res2001
Дата сообщения: 03.07.2010 13:10
Engraf
попробуй такой вариант:

Код: @echo off
setlocal ENABLEDELAYEDEXPANSION
set "strNum="
set "strAcc="
for /F "usebackq tokens=1* delims=:" %%A in (`findstr /l "user_pref(\"mail.accountmanager.accounts\"" temp.txt`) do (
    set strNum=%%A
    set strAcc=%%B
)
set /A strNum=%strNum%-1
set /a "count=0"
for /F "usebackq tokens=1* delims=:" %%A in (temp.txt) do if !count! lss %strNum% (
    set /a "count+=1"
    call :DELNUM "%%B" temp2.txt
) else goto:eof
goto :EOF
:DELNUM
echo %1
Автор: Engraf
Дата сообщения: 03.07.2010 13:25
Похоже, дело все же в кодировке.
Я перекодировал в ANSI и строки перестали дублироваться.
res2001

Цитата:
попробуй такой вариант:

Да, этот вариант работает. Правда вывод в файл сохраняется в другой кодировке - отсюда проблемы с русскими словами. Плюс там еще проблемы со спец символами, в основном с " и ()... Но это уж, буду дальше разбираться.

Спасибо.

[more=Добавлено:]собственно основная цель скрипта - изменение почтового логина в Mozilla Thunderbird c простого имени на полный почтовый адрес, путем внесения соответствующих изменений в файл prefs.js (кусок которого я и выкладывал), лежащего в папке с профайлом пользователя. [/more]

P.S. До VBS руки пока не дошли
Автор: res2001
Дата сообщения: 03.07.2010 13:35
Engraf

Цитата:
Похоже, дело все же в кодировке.
Я перекодировал в ANSI и строки перестали дублироваться

Перекодировал в UTF8 - не дублируется полтергейст

Добавлено:
Engraf

Цитата:
Правда вывод в файл сохраняется в другой кодировке

добавь вначало скрипта команду:
chcp 65001
это включит для батника кодировку UTF8, и включи в для консоли шрифт Lucida Console, чтоб русские буквы нормально выводились.
Только говорят батники могут работать как-то неадекватно в UTF8.
Автор: ComradG
Дата сообщения: 03.07.2010 18:31
Если честно, то ДОСТАЛА МЕНЯ КЛАВИША WIN!!!
В итоге я навлял [more]
Код: @echo off
setlocal
set builder=%systemroot%\microsoft.net\framework\v2.0.50727\csc.exe
if exist %builder% goto:generate_source
echo Operation terminate.
goto:eof
:generate_source
set source=%~dp0source.cs
1>%source% (
echo using System;
echo using System.Diagnostics;
echo using System.Windows.Forms;
echo using System.Runtime.InteropServices;
echo.
echo class WinKeyBlocker
echo {
echo private const int WH_KEYBOARD_LL = 13;
echo private const int WM_KEYDOWN = 0x0100;
echo private static LowLevelKeyboardProc _proc = HookCallback;
echo private static IntPtr _hookID = IntPtr.Zero;
echo.
echo public static void Main^(^)
echo {
echo _hookID = SetHook^(_proc^);
echo Application.Run^(^);
echo UnhookWindowsHookEx^(_hookID^);
echo }
echo.
echo private static IntPtr SetHook^(LowLevelKeyboardProc proc^)
echo {
echo using ^(Process curProcess = Process.GetCurrentProcess^(^)^)
echo using ^(ProcessModule curModule = curProcess.MainModule^)
echo {
echo return SetWindowsHookEx^(WH_KEYBOARD_LL, proc, GetModuleHandle^(curModule.ModuleName^), 0^);
echo }
echo }
echo.
echo private delegate IntPtr LowLevelKeyboardProc^(int nCode, IntPtr wParam, IntPtr lParam^);
echo.
echo private static IntPtr HookCallback^(int nCode, IntPtr wParam, IntPtr lParam^)
echo {
echo if ^(^(nCode ^>= 0^) ^&^& ^(wParam ^== ^(IntPtr^)WM_KEYDOWN^)^)
echo {
echo int vkCode = Marshal.ReadInt32^(lParam^);
echo if ^(^(^(Keys^)vkCode ^== Keys.LWin^)^|^|^(^(Keys^)vkCode ^== Keys.RWin^)^)
echo {
echo return ^(IntPtr^)1;
echo }
echo }
echo return CallNextHookEx^(_hookID, nCode, wParam, lParam^);
echo }
echo.
echo [DllImport^("user32.dll", CharSet = CharSet.Auto, SetLastError = true^)]
echo private static extern IntPtr SetWindowsHookEx^(int idHook, LowLevelKeyboardProc lpfn,
echo IntPtr hMod, uint dwThreadId^);
echo.
echo [DllImport^("user32.dll", CharSet = CharSet.Auto, SetLastError = true^)]
echo private static extern bool UnhookWindowsHookEx^(IntPtr hhk^);
echo.
echo [DllImport^("user32.dll", CharSet = CharSet.Auto, SetLastError = true^)]
echo private static extern IntPtr CallNextHookEx^(IntPtr hhk, int nCode,
echo IntPtr wParam, IntPtr lParam^);
echo.
echo [DllImport^("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true^)]
echo private static extern IntPtr GetModuleHandle^(string lpModuleName^);
echo }
)
%builder% /nologo /t:exe /out:%~dp0WinKey.exe %~dp0source.cs
del /f /q %~dp0source.cs
start /b %~dp0WinKey.exe
goto:eof
endlocal
exit /b
Автор: wolf0425
Дата сообщения: 03.07.2010 19:12

Цитата:
В итоге я навлял
ну и нафиг этот резидент и висящее консольное окно ?

Код: REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,00,00,5b,e0,00,00,00,00,\
00,00,00,00
Автор: ComradG
Дата сообщения: 03.07.2010 19:20
wolf0425

Цитата:
ну и нафиг этот резидент и висящее консольное окно ?

О каком консольном окне ты говоришь? там же start /b - ничего висеть не должно. А через реестр всякий раз отрубать - так затрахаешься перезагружаться.

Добавлено:
Кстати, ты батник запускал не через консоль? Если не через консоль, то да, бага есть.
Автор: res2001
Дата сообщения: 03.07.2010 19:27
ComradG
Чем же тебя так достала эта клавиша?
Меня, помнится, она тоже раздражала, лет 10 назад. А сейчас уже привык, даже пользуюсь иногда
А код надо в ветку по С# отправить.
Автор: ComradG
Дата сообщения: 03.07.2010 19:42
res2001

Цитата:
А код надо в ветку по С# отправить.

Ну не знаю, хотя идея была.

Цитата:
Чем же тебя так достала эта клавиша?

Представь, сидишь за отладчиком, надо нажать Ctrl+Alt+X, а вместо Alt случайно жмешь Win. Раньше на буках Win хоть делели повыше, а теперь также как и на клаве десктопов. Не все правда, но все же. А батником код представлен для людей, которые не прогают на CиШарпе, но кого тоже бесит Win. То, что wolf0425 предлагает, требует перезагрузки, а туе - повисел процесс WinKey.exe на определенное время, а после его прихлопнул командой taskkill или просто kill, если Debugging Tools в наличи имеются. Кстати, на счет "висящего окна", res2001 у тебя та же бага?
Автор: res2001
Дата сообщения: 03.07.2010 20:01
ComradG

Цитата:
у тебя та же бага?

Да окно есть. Если запускать через консоль или через фар, то нет, но когда закроешь косоль/фар, то и winkey закрывается.

Почему то мне всегда казалось, что вещи типа перехватчиков системных вызовов надо на Си делать. Шарпы не для этого все же.
Автор: ComradG
Дата сообщения: 03.07.2010 20:02

Цитата:
А сейчас уже привык, даже пользуюсь иногда

Ну а я ей полузуюсь постоянно: Win+E, Win+F, Win+D, Win+M, - и это далеко неполный список.
Автор: res2001
Дата сообщения: 03.07.2010 20:07
ComradG

Цитата:
Ну а я ей полузуюсь постоянно: Win+E, Win+F, Win+D, Win+M, - и это далеко неполный список.

ну вот и я о том же
Автор: ComradG
Дата сообщения: 03.07.2010 20:09

Цитата:
Шарпы не для этого все же.

Просто не хотелось заморачиваться с WinAPI и далеко не у всех установлена MS VS (а .NET Framework стоит у каждого - это что-то софта де-факто ), а

Цитата:
но когда закроешь косоль/фар, то и winkey закрывается

так и задумывалось. У меня консоль всегда открыта. И потом, WinKey.exe загенеренный батом останется в любом случае - ничего не мешает его запускать вручную А на счет консольного окна - что можешь предложить? Я смотрел хелп по start'у, но чего-то ничего не надумалось.
P.S>На счет шарпов ты зря, там такое можно навалять, что волосы будут шевелиться в неприличных местах.
Автор: res2001
Дата сообщения: 03.07.2010 20:20
ComradG

Цитата:
P.S>На счет шарпов ты зря, там такое можно навалять, что волосы будут шевелиться в неприличных местах.

Не сомневаюсь. Но все же останусь при своем мнении.

Цитата:
А на счет консольного окна - что можешь предложить? Я смотрел хелп по start'у, но чего-то ничего не надумалось.

Со стартом ничего не выйдет - какое-то консольное окно все равно останется.
Посмотри страницу назад пост boy999 он как раз борется со скрытием окон.
Автор: ComradG
Дата сообщения: 03.07.2010 20:27
res2001
Блин, похоже в скрипт придется добавить генератор INF файла и строчку с rundll32.exe, запускающую его. Пока только такие идеи.
P.S>Весь Берлин сходит с ума! Хоть и терпеть не могу футбол, все же 4:0 в пользу немцев - это что-то. Вы бы видели, что сейчас в лечебке творится!!!
Автор: res2001
Дата сообщения: 03.07.2010 20:35
ComradG
сори за офтоп , но тоже смотрел игру. Немцы отлично играли. Финал Германия - Голландия будет убойное зрелище.
Автор: ComradG
Дата сообщения: 03.07.2010 20:56
Куда-то wolf0425 пропал, никаких идей не подкидывает.
res2001
Есть какие-нибудь идеи, не на счет хуков клавы Win, а вообще? А то я тут на VBScript'е написал игрушку от нефиг делать, на батнике рисую генератор этой vbs-ки.
P.S>Фига! Аманда - здешняя медсестра - устроила стриптиз в често немецкой сборной надо думать

Добавлено:
P.S2> Извиняюсь за , но что за галюны с форумом-то?
Автор: wolf0425
Дата сообщения: 03.07.2010 21:21

Цитата:
О каком консольном окне ты говоришь? там же start /b - ничего висеть не должно.

у тебя откровенное непонимание того, для чего придуман start /b
хочется скрыть окно просцесса - юзай hstart.exe или cmdow.exe или запусти через шедулер или через vbs

Добавлено:
Цитата:
Ну а я ей полузуюсь постоянно: Win+E, Win+F, Win+D, Win+M, - и это далеко неполный список.
мне для этого всего хватает правого Win

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132

Предыдущая тема: XP не видит второй раздел на съемном USB-HDD


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