Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)

Модерирует : gyra, Maz

Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
(часть 1) (часть 2)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
· Переход из 32-битной версии cmd.exe в 64-битную

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:38 10-03-2009 | Исправлено: TechnicsKuzya, 13:54 27-12-2009
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1-й вопрос,
есть батник, который надо запускать по расписанию, засунут в виндовс - шедулер.
 
Как сделать его исполнение незаметным для юзера, находящегося перед экраном,а то выскакивает cmd, а этого не надо, надо скрытно..\
Спс

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 21:10 18-01-2010
Rodgerland

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mugil_cephalus
 

Код:
 
C:\Documents and Settings\Administrator\Desktop>for /F "tokens=*" %i in ('reg query "hklm\system" /s |find /i /n "D3DOGL
_70835937"') do for /F "tokens=1 delims=[]" %a in ('echo %i') do set "skip1=%a"   && goto:next
 
C:\Documents and Settings\Administrator\Desktop>for /F "tokens=1 delims=[]" %a in ('echo [13288]    D3DOGL_70835937    R
EG_BINARY    00000010') do set "skip1=%a"   && goto:next
 
C:\Documents and Settings\Administrator\Desktop>set "skip1=13288"   && goto:next
 
C:\Documents and Settings\Administrator\Desktop>for /F "skip=13288 tokens=*" %i in ('reg query "hklm\system" /s |find /i
 /n "HKEY_LOCAL_MACHINE\system"') do for /F "tokens=1 delims=[]" %a in ('echo %i') do set "skip2=%a"   && goto:next2
 
C:\Documents and Settings\Administrator\Desktop>for /F "tokens=1 delims=[]" %a in ('echo [70336]HKEY_LOCAL_MACHINE\syste
m\CurrentControlSet\Services\Msfs\Enum') do set "skip2=%a"   && goto:next2
 
C:\Documents and Settings\Administrator\Desktop>set "skip2=70336"   && goto:next2
 
C:\Documents and Settings\Administrator\Desktop>set /a skip2-=2
 
C:\Documents and Settings\Administrator\Desktop>for /F "skip=70334 tokens=*" %i in ('reg query "hklm\system" /s |find /i
 /n "HKEY_LOCAL_MACHINE\system"') do for /F "tokens=1 delims=[]" %a in ('echo %i') do set "var=%a"   && goto:next3
 
C:\Documents and Settings\Administrator\Desktop>echo __
__
 
C:\Documents and Settings\Administrator\Desktop>pause
Для продолжения нажмите любую клавишу . . .

 
Вроде работает, но одному тебе известно как это будет выглядеть =)

Всего записей: 27 | Зарегистр. 26-01-2007 | Отправлено: 21:15 18-01-2010
mugil_cephalus

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
прога cmdow - http://www.commandline.co.uk/cmdow/  
консольное окно мигнет и "уйдет" в background  
прога hstart - http://www.ntwind.com/software/utilities/hstart.html  
консольное окно даже не мигнет
 
Добавлено:
Rodgerland
так,.. понятно... работает неплохо, но пока не совсем так - будем думать
 
до этой строки
Цитата:
C:\Documents and Settings\Administrator\Desktop>for /F "skip=70334 tokens=*" %i in ('reg query "hklm\system" /s |find /i  
 /n "HKEY_LOCAL_MACHINE\system"') do for /F "tokens=1 delims=[]" %a in ('echo %i') do set "var=%a"   && goto:next3  
 
 

работает, как задумывал - еще помозгуую

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 21:23 18-01-2010 | Исправлено: mugil_cephalus, 21:30 18-01-2010
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://www.ntwind.com/software/utilities/hstart.html
чета они перемудрили
 
http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=29819&start=1200
вот сматри гораздо удачнее решилось - во первых это чистая апи функция таким образом сохранились все возможности скрытые в том числе и понимание работы утилиты - тоже самое что разобраться в работе апи функции, плюс может быть передан параметр. кроме запуска батников так же можно решить проблему запуска из контекстного меню папок, файлов и мой компьютер. ну и весит полтора кб

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 21:46 18-01-2010 | Исправлено: bomzzz, 21:52 18-01-2010
velvetfox

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу помощи знатоков.
Ситуация:
Вот таким скриптом запускаются два батника,последовательно копирующие файл в две папки на флэшке G:\  
 
Set WshShell = CreateObject("WScript.Shell")  
WshShell.Run "D:\test\Z.bat", 0, true  
WshShell.Run "D:\test\ZZ.bat", 0, true  
WScript.Quit
 
сами батники:
Z.bat
@echo off    
chcp 1251
copy /Y "C:\Documents and Settings\Елена\Application Data\EssentialPIM\*.epim" "G:\BACKUP\Application Data\"
 
ZZ.bat
@echo off    
chcp 1251
copy /Y "C:\Documents and Settings\Елена\Application Data\EssentialPIM\*.epim"  "G:\Prgport\EPIMportable\Database\"
 
Вопросы:
1.Как всё это объединить в один скрипт или батник?
2.Как сделать так, чтобы копировался не один файл *.epim, а всё содержимое папки EssentialPIM (там ещё папка есть и файл конфигурации)?
3.Возможна ли реализация такого: скрипт распознаёт флэшку (с любой буквой), при отсутствии на ней целевых папок создает их и копирует туда инфу.

Всего записей: 8 | Зарегистр. 11-09-2009 | Отправлено: 21:53 18-01-2010 | Исправлено: velvetfox, 00:17 22-01-2010
Rodgerland

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
velvetfox
Хм, может я не прав, но попробую.
 
Set WshShell = CreateObject("WScript.Shell")  
WshShell.Run "D:\test\Z.bat", 0, true  
WScript.Quit
 
 
Z.bat  
@echo off    
chcp 1251  
copy "C:\Documents and Settings\Елена\Application Data\EssentialPIM\*.*" /Y "G:\BACKUP\Application Data\"  
echo Copied full
chcp 1251  
copy "C:\Documents and Settings\Елена\Application Data\EssentialPIM\*.*" /Y "G:\Prgport\EPIMportable\Database\"
echo Copied full
 
так можно или одним пользоваться батником или батник+скрипт

Всего записей: 27 | Зарегистр. 26-01-2007 | Отправлено: 22:09 18-01-2010 | Исправлено: Rodgerland, 22:13 18-01-2010
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://forum.ru-board.com/topic.cgi?forum=33&bm=1&topic=1491&start=1400#lt
лучше в теме про вбс скрипты спросить
да возможно распознавать букву диска
for /f %%i in ('fsutil fsinfo drives ^|more') do (  
  echo %%i
)
у тебя скрипт выполняет единсвтенную функцию - запуск батника в режиме скрытого окна
 
xcopy /E C:\MyPapka E:\MyPapka
 
rem chcp 1251
"%userprofile%\Application Data\EssentialPIM\"

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 22:40 18-01-2010 | Исправлено: bomzzz, 00:50 19-01-2010
mugil_cephalus

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rodgerland

Код:
for /f "tokens=*" %%i in ('reg query "hklm\system" /s ^|find /i /n "D3DOGL_70835937"') do for /f "tokens=1 delims=[]" %%a in ('echo %%i') do set "skip1=%%a" &&goto:next  
:next  
for /f "skip=%skip1% tokens=*" %%i in ('reg query "hklm\system" /s ^|find /i "HKEY_LOCAL_MACHINE\system"') do set "var=%%i" &&goto:next2  
:next2  
for /f "tokens=*" %%i in ('reg query "hklm\system" /s ^|find /i "HKEY_LOCAL_MACHINE\system"') do if "_%%i" neq "_%var%" set "var2=%%i" &if "_%%i" equ "_%var%" goto:next3  
:next3
echo _%var2%_
pause

 
нет, блин, - отпарсил - код немного неправильный - подумаю еще...

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 23:01 18-01-2010 | Исправлено: mugil_cephalus, 00:08 19-01-2010
Rodgerland

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mugil_cephalus
Вижу, что-то
Цитата:
:next2  
for /f "tokens=*" %%i in ('reg query "hklm\system" /s ^|find /i "HKEY_LOCAL_MACHINE\system"') do if "_%%i" neq "_%var%" set "var2=%%i" &if "_%%i" equ "_%var%" goto:next3  
:next3  
echo _%var2%_  
pause

Что-то здесь не то, полностью видимо весь реестр стал выдавать на экран.

Всего записей: 27 | Зарегистр. 26-01-2007 | Отправлено: 00:16 19-01-2010
mugil_cephalus

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
for /f "tokens=*" %%i in ('reg query "hklm\system" /s ^|findstr /i /n "HKEY_LOCAL_MACHINE\system D3DOGL_70835937"') do for /f "tokens=1 delims=[]" %%a in ('echo %%i') do set "skip1=%%a" &&goto:next  
:next  
for /f "skip=%skip1% tokens=*" %%i in ('reg query "hklm\system" /s ^|findstr /i "HKEY_LOCAL_MACHINE\system D3DOGL_70835937"') do for /f "tokens=*" %%a in ('echo %%i ^|find /i "HKEY_LOCAL_MACHINE\system"') do set "var=%%a" &&goto:next2  
:next2  
for /f "tokens=*" %%i in ('reg query "hklm\system" /s ^|findstr /i "HKEY_LOCAL_MACHINE\system D3DOGL_70835937"') do if "_%%i" neq "_%var%" set "var2=%%i" &if "_%%i" equ "_%var%" goto:next3  
:next3  
echo _%var2%_  
pause  
 
Добавлено:
Rodgerland

Цитата:
полностью видимо весь реестр стал выдавать на экран.

это естественно - код все перебирает - у тебя же не известен точно раздел
вывод потом всегда можно в nul отправить, там идет проверка в конструкции IF
 
можно для удобочитаемости вставить вначале кода
mode con lines=6000
cd\
 
Добавлено:
Rodgerland
я еще немного модифицировал код - у меня работает, но пока отлавливает не точто нужно
 
G:\scripts\test>cd\
 
G:\>for /F "tokens=*" %i in ('reg query "hklm\hardware" /s |findstr /i "HKEY_LOCAL_MACHINE\hardware VideoBiosDate"') do for /F "tokens=*" %a in (
'echo %i |find /i /n "VideoBiosDate"') do for /F "tokens=1 delims=[]" %B in ('echo %a') do set "skip1=%B"   && goto:next
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 125.
FINDSTR: Слишком длинная строка 286.
FINDSTR: Слишком длинная строка 287.
 
G:\>for /F "tokens=*" %a in ('echo HKEY_LOCAL_MACHINE\hardware |find /i /n "VideoBiosDate"') do for /F "tokens=1 delims=[]" %B in ('echo %a') do
set "skip1=%B"   && goto:next
 
G:\>for /F "tokens=*" %a in ('echo HKEY_LOCAL_MACHINE\hardware\ACPI |find /i /n "VideoBiosDate"') do for /F "tokens=1 delims=[]" %B in ('echo %a'
) do set "skip1=%B"   && goto:next
 
..........  
 
G:\>if "_HKEY_LOCAL_MACHINE\hardware\RESOURCEMAP\System Resources\Reserved" NEQ "_HKEY_LOCAL_MACHINE\hardware\ACPI " set "var2=HKEY_LOCAL_MACHINE
\hardware\RESOURCEMAP\System Resources\Reserved"   & if "_HKEY_LOCAL_MACHINE\hardware\RESOURCEMAP\System Resources\Reserved" EQU "_HKEY_LOCAL_MAC
HINE\hardware\ACPI " goto:next3
 
G:\>echo _HKEY_LOCAL_MACHINE\hardware\RESOURCEMAP\System Resources\Reserved_
_HKEY_LOCAL_MACHINE\hardware\RESOURCEMAP\System Resources\Reserved_
 
G:\>pause
Для продолжения нажмите любую клавишу . . .
 
 
 
Добавлено:
Rodgerland
пока первую часть проблемы решил - отловил то, что нужно - потом буду дальше смотреть
вот слегка неотлаженный код, но, главное со своей задачей справился у меня - отловил, то, чего я хотел

Код:
mode con lines=6000
cd\
 
for /f "tokens=*" %%i in ('reg query "hklm\hardware" /s ^|findstr /i /n "HKEY_LOCAL_MACHINE\hardware VideoBiosDate"') do call:_1 "%%i"
pause
 
:_1
echo %~1|find /i "VideoBiosDate" &&for /f "tokens=1 delims=:" %%a in ('echo %~1') do echo %%a>>n2
goto:eof
 

 
вот листинг:
............................  
G:\>goto:eof
 
G:\>call:_1 "46:    VideoBiosDate       REG_SZ  04/11/02"
 
G:\>echo 46:    VideoBiosDate   REG_SZ  04/11/02  | find /i "VideoBiosDate"   && for /F "tokens=1 delims=:" %a in ('echo 46: VideoBiosDate REG_SZ
 04/11/02') do echo %a 1>>n2
46:    VideoBiosDate    REG_SZ  04/11/02
 
G:\>echo 46 1>>n2
 
G:\>goto:eof
 
G:\>call:_1 "48:HKEY_LOCAL_MACHINE\hardware\DESCRIPTION\System\CentralProcessor"
............................

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 00:22 19-01-2010 | Исправлено: mugil_cephalus, 01:41 19-01-2010
mugil_cephalus

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rodgerland
дописал код, вроде по синтаксису все верно, но проверить не могу, никак не знаю как обойти проблему, с которой сталкиваюсь:
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 125.
FINDSTR: Слишком длинная строка 286.
FINDSTR: Слишком длинная строка 287.

Код:
mode con lines=6000
cd\
 
for /f "tokens=*" %%i in ('reg query "hklm\hardware" /s ^|findstr /i /n "HKEY_LOCAL_MACHINE\hardware VideoBiosDate"') do call:_1 "%%i"
for /f "skip=%skip1% tokens=*" %%i in ('reg query "hklm\hardware" /s ^|findstr /i "HKEY_LOCAL_MACHINE\hardware VideoBiosDate"') do call:_2 "%%i"
goto:eof
 
:next1
echo _%var%_
pause
 
:_1
echo %~1|find /i "VideoBiosDate" &&for /f "tokens=1 delims=:" %%a in ('echo %~1') do set "skip1=%%a"
goto:eof
 
:_2
echo %~1|find /i "HKEY_LOCAL_MACHINE\hardware" &&(set "var=%~1" &goto:next1)
goto:eof
 

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 10:38 19-01-2010
Rodgerland

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mugil_cephalus
Спасибо тебе большое, я понял твою идею, попробую что-нить поэксперементировать, но как-нибудь попробую с for...
 
Добавлено:
mugil_cephalus
 
Этот же принцип должен быть такой, как у всех программ с чисткой реестра, может пойду побегаю по темам, может и найду. Во всяком случае, благодарю!

Всего записей: 27 | Зарегистр. 26-01-2007 | Отправлено: 12:24 19-01-2010
velvetfox

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rodgerland

Цитата:
Z.bat  
@echo off      
chcp 1251  
copy "C:\Documents and Settings\Елена\Application Data\EssentialPIM\*.*" /Y "G:\BACKUP\Application Data\"  
echo Copied full  
chcp 1251  
copy "C:\Documents and Settings\Елена\Application Data\EssentialPIM\*.*" /Y "G:\Prgport\EPIMportable\Database\"  
echo Copied full

в таком варианте копируются все файлы, а вложенная папка нет.
 
вот вариант с xcopy хорош, всё работает(спасибо bomzzz)  
bomzzz

Цитата:
да возможно распознавать букву диска  
for /f %%i in ('fsutil fsinfo drives ^|more') do (    
  echo %%i  
)

да, выводится список всех дисков.
Но возможно ли, чтобы флэшка распознавалась автоматом, создавались
папки x:\Prgport\EPIMportable\Database\  и x:\BACKUP\Application Data\
и туда происходило копирование? Если вообще такое возможно при помощи батника.
 
 

Всего записей: 8 | Зарегистр. 11-09-2009 | Отправлено: 15:14 19-01-2010 | Исправлено: velvetfox, 15:43 19-01-2010
mugil_cephalus

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rodgerland
у меня первая часть решилась - http://forum.ru-board.com/topic.cgi?forum=62&topic=17154&start=2220#18
теперь пострю отсев -  

Цитата:
D3DOGL_70835937    REG_BINARY    00000010  
    D3DOGL_70835937    REG_BINARY    00000200  
    D3DOGL_70835937    REG_BINARY    00000010  

 
 
Добавлено:
Rodgerland
 
 

Код:
mode con lines=6000
cd\
 
for /f "tokens=*" %%i in ('reg query "hklm\system" /s ^|findstr /i "HKEY_LOCAL_MACHINE\system D3DOGL_70835937"') do call:_1 "%%i"
goto:eof
 
:next1
echo _%var1%_
reg query %var1%|find /i "D3DOGL_70835937"|find /i "00000200"
pause
 
:_1
echo %~1|find /i "HKEY_LOCAL_MACHINE\system" &&set "var1=%~1"
echo %~1|find /i "D3DOGL_70835937" &&goto:next1
goto:eof

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 15:28 19-01-2010 | Исправлено: mugil_cephalus, 15:47 19-01-2010
mugil_cephalus

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rodgerland
 
так как у тебя три значения у одного параметра (а может эти параметры еще и в разных разделах)

Цитата:
D3DOGL_70835937    REG_BINARY    00000010  
    D3DOGL_70835937    REG_BINARY    00000200  
    D3DOGL_70835937    REG_BINARY    00000010  
, то еще отпарси вот так:
 

Код:
mode con lines=6000  
cd\  
 
for /f "tokens=*" %%i in ('reg query "hklm\system" /s ^|findstr /i "HKEY_LOCAL_MACHINE\system D3DOGL_70835937"') do call:_1 "%%i"  
goto:eof  
 
:next1  
echo _%var1%_  
rem еще одна проверка, чтобы не удалить не то
reg query %var1%|find /i "D3DOGL_70835937"|find /i "00000200" &&reg add ....  
pause  
 
:_1  
echo %~1|find /i "HKEY_LOCAL_MACHINE\system" &&set "var1=%~1"  
echo %~1|find /i "D3DOGL_70835937"|find /i "00000200" &&goto:next1  
goto:eof

 
Добавлено:

Код:
mode con lines=6000  
cd\  
   
for /f "tokens=*" %%i in ('reg query "hklm\system" /s ^|findstr /i "HKEY_LOCAL_MACHINE\system D3DOGL_70835937"') do call:_1 "%%i"  
goto:eof  
   
:next1  
echo _%var1%_  
rem еще одна проверка, чтобы не удалить не то  
reg query %var1%|find /i "D3DOGL_70835937"|find /i "00000200" &&reg add "%var1%" /v D3DOGL_70835937 /t REG_BINARY /d 00000010 /f
pause  
goto:eof
   
:_1  
echo %~1|find /i "HKEY_LOCAL_MACHINE\system" &&set "var1=%~1"  
echo %~1|find /i "D3DOGL_70835937"|find /i "00000200" &&goto:next1  
goto:eof

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 17:42 19-01-2010 | Исправлено: mugil_cephalus, 18:27 19-01-2010
Rodgerland

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mugil_cephalus
 
Там эти три значения не знаю каким боком попали, а точнее попали в список истории командной строки , а третия в список истории блокнота, но это не главное, главный HKEY_LOCAL_MACHINE\system и значение может быть не только 00000200, 00000010, но и всякое другое.
 
Добавлено:

Цитата:
Код:mode con lines=6000    
cd\    
   
for /f "tokens=*" %%i in ('reg query "hklm\system" /s ^|findstr /i "HKEY_LOCAL_MACHINE\system D3DOGL_70835937"') do call:_1 "%%i"    
goto:eof    
   
:next1    
echo _%var1%_    
rem еще одна проверка, чтобы не удалить не то  
reg query %var1%|find /i "D3DOGL_70835937"|find /i "00000200" &&reg add "%var1%" /v D3DOGL_70835937 /t REG_BINARY /d 00000010 /f  
pause    
goto:eof  
   
:_1    
echo %~1|find /i "HKEY_LOCAL_MACHINE\system" &&set "var1=%~1"    
echo %~1|find /i "D3DOGL_70835937"|find /i "00000200" &&goto:next1    
goto:eof

 
ЧТо-то в начале пишит слишком длинная строка, потом перебирает реестр и ничего не  меняет...хм..

Всего записей: 27 | Зарегистр. 26-01-2007 | Отправлено: 21:35 19-01-2010
mugil_cephalus

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rodgerland
у параметра D3DOGL_70835937 какое значение нужно найти и на какое заменить?
строка echo _%var1%_ чего показывает?
 
Добавлено:
у меня прототип работает (раздел находит)

Код:
mode con lines=6000
cd\
 
for /f "tokens=*" %%i in ('reg query "hklm\hardware" /s ^|findstr /i "HKEY_LOCAL_MACHINE\hardware VideoBiosDate"') do call:_1 "%%i"
goto:eof
 
:next1
echo _%var1%_
pause
 
:_1
echo %~1|find /i "HKEY_LOCAL_MACHINE\hardware" &&set "var1=%~1"
echo %~1|find /i "VideoBiosDate" &&goto:next1
goto:eof
 

 
листинг:
G:\>echo _HKEY_LOCAL_MACHINE\hardware\DESCRIPTION\System_
_HKEY_LOCAL_MACHINE\hardware\DESCRIPTION\System_
 
G:\>pause
Для продолжения нажмите любую клавишу . . .

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 22:30 19-01-2010
Rodgerland

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mugil_cephalus
 
D3DOGL_70835937 значение может быть абсолютна разное, а просто заменить на 00000010
 
_%var1%_ вообще ничего не показывает, изначально пишит слишком длинная строка...

Всего записей: 27 | Зарегистр. 26-01-2007 | Отправлено: 23:11 19-01-2010 | Исправлено: Rodgerland, 23:11 19-01-2010
mugil_cephalus

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rodgerland
много ли всего параметров D3DOGL_70835937 ?
менять у всех параметров D3DOGL_70835937 значение на 00000010 ?
введи в cmd - reg query "hklm\system" /s|find /i "D3DOGL_70835937" и покажи листинг
 
Добавлено:

Цитата:
_%var1%_ вообще ничего не показывает, изначально пишит слишком длинная строка...  

у меня вот:
G:\scripts\test>cd\
 
G:\>for /F "tokens=*" %i in ('reg query "hklm\hardware" /s |findstr /i "HKEY_LOCAL_MACHINE\hardware VideoBiosDate"') do call:_1 "%i"
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 15.
FINDSTR: Слишком длинная строка 125.
FINDSTR: Слишком длинная строка 286.
FINDSTR: Слишком длинная строка 287.
 
G:\>call:_1 "HKEY_LOCAL_MACHINE\hardware"
 
.............................
много строк
............................
 
G:\>echo _HKEY_LOCAL_MACHINE\hardware\DESCRIPTION\System_  
_HKEY_LOCAL_MACHINE\hardware\DESCRIPTION\System_  
 
G:\>pause  
Для продолжения нажмите любую клавишу . . .
-----------------------------------------------------------------------
до pause доходит? покажи строку перед pause

Всего записей: 1072 | Зарегистр. 07-09-2009 | Отправлено: 23:15 19-01-2010 | Исправлено: mugil_cephalus, 23:20 19-01-2010
Rodgerland

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mugil_cephalus
 

Цитата:
D3DOGL_70835937
параметр всего один в системе больше быть не может, но как я уже замусарил реестр, у меня может мыть находить ссылки на историю этого файла, а значение менять именно на 00000010.
 
 
C:\>reg query "hklm\system" /s|find /i "D3DOGL_70835937"
    D3DOGL_70835937    REG_BINARY    00000200
    D3DOGL_70835937    REG_BINARY    00000200
    D3DOGL_70835937    REG_BINARY    00000200
 
два остальные это мусор, а интересно будет менять в первом попавшимся ключе значение или во всех?..
 
Добавлено:
И
C:\>for /F "tokens=*" %i in ('reg query "hklm\hardware" /s |findstr /i "HKEY_LOCAL_MACHINE\hardware VideoBiosDate"') do
call:_1 "%i"
Непредвиденное появление: |.
 
Добавлено:
Секунду, сейчас еще разок попробую..

Всего записей: 27 | Зарегистр. 26-01-2007 | Отправлено: 23:21 19-01-2010
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (03-03-2010 16:29): Лимит страниц. Продолжаем здесь.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru