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

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

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

Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

   

KLASS



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

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

Всего записей: 11448 | Зарегистр. 12-10-2001 | Отправлено: 04:28 24-09-2002 | Исправлено: Elroir, 19:35 11-09-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vshersh
Видимо так:

Код:
 
@echo off
setlocal enabledelayedexpansion  
for /f "tokens=2*" %%i in ('reg query HKCU\Environment /v path 2^>nul ^| findstr /s /i reg_sz') do set "MyPath=%%j"  
set "current=%~dp0"
set "current=%current:~0,-1%"
set "found=no"
call :checkpath "%MyPath%"
if "%found%"=="no" (
if "%MyPath%"=="" (set MyPath="%current%") else (set MyPath="%MyPath%;%current%")
reg ADD HKCU\Environment /v path /f /d !MyPath!>nul
)
goto :EOF
:checkpath
for /f "tokens=1* delims=;" %%a in (%1) do (
if "%%a"=="%current%" set "found=yes"
if not "%%b"=="" call :checkpath "%%b"  
)
 

Меня смущает, что path берется из HKCU\Environment. У меня там нет значения path.

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 20:35 18-04-2007
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
Просто !  

Цитата:
Меня смущает, что path берется из HKCU\Environment. У меня там нет значения path.
 
Спасибо за наводку, видимо нужно менять другую ветку реестра:

Цитата:
To programmatically add or modify system environment variables, add them to the HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment registry key, then broadcast a WM_SETTINGCHANGE message. This allows applications, such as the shell, to pick up your updates. Note that environment variables listed in this key are limited to 1024 characters.

 
И еще вопрос в образовательных целях: почему все команды set указаны в двойных кавычках?

Цитата:
set "current=%~dp0"

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 21:18 18-04-2007
Elroir



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

Цитата:
почему все команды set указаны в двойных кавычках?

Это в рамках борьбы с тем, как копируется код с руборда. Когда копируешь - в конце строк появляются пробелы. Если не ставить кавычки - эти пробелы могут попасть в переменную и код будет работать неправильно. А так кавычки определют конец значения, которое записывается в переменную.

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:28 18-04-2007
Smitis



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Elroir
vshersh
Несколько замечаний:
1. REG_SZ лучше не искать. Там может быть и REG_EXPAND_SZ
2. Системная переменная PATH составляется из двух частей: из HKCU и HKLM (в принципе, может брать ещё из autoexec.bat и config.sys, но это детали), так что ветку реестра можно не менять.
3. После изменения переменной через REG система ещё не будет знать об её изменении, надо дать команду (вроде) rundll32 user32.dll,UpdatePerUserSystemParameters
 
И вообще, посмотрите утилиту PATHMAN из Resource Kit-а именно для данной цели (удаление / добавление путей в любую часть PATH)
pathman RESKIT

----------
Разум когда-нибудь победит

Всего записей: 3452 | Зарегистр. 09-02-2003 | Отправлено: 11:56 19-04-2007 | Исправлено: Smitis, 12:00 19-04-2007
igor_andreev

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

Цитата:
И вообще, посмотрите утилиту PATHMAN из Resource Kit-а

От себя рекомендую EDITPATH, я ей пользуюсь.
http://www.jsifaq.com/SF/Tips/Tip.aspx?id=8840
умеет проверять, есть ли папка в PATH, возвращает 0 или 1, в батниках удобно пользоваться. Ну и добавить-удалить-прочитать само-собой.

Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 12:34 19-04-2007
AlessTO

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Граждане! Есть проблема:
Требуется установить прогу (ПЕРЕсобранную) и, чтоб не париться с настройкой решено было внести изменения в реестр прямо при инсталле. Но эта <%%!Е;!!> часть настроек пишет в sID (куст типа HKU\S-1-5-21-...
Необходим код - вот основа (подогнали добрые люди)

Код:
Set WshShell = CreateObject("Wscript.Shell")
Set fso = Wscript.CreateObject("Scripting.FilesystemObject")
fName = WshShell.SpecialFolders("Desktop") & "\SIDlist.txt"
Set b = fso.CreateTextFile(fName, true)
 
 
strProfileBranch = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\"
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colAccounts = objWMIService.ExecQuery _
    ("Select * From Win32_UserAccount")
 
For Each objAccount in colAccounts
    If objAccount.Name = "HelpAssistant" or objAccount.Name = "SUPPORT_388945a0" or objAccount.Name = "Администратор" or objAccount.Name = "Гость" then
    else
        b.writeline "" & objAccount.SID
    end if
Next
 
Function GetHomePath(strSID)
    On Error Resume Next
        GetHomePath = WshShell.ExpandEnvironmentStrings(Trim(WshShell.RegRead (strProfileBranch & strSID & "\ProfileImagePath")))
    On Error Goto 0
End Function
 
b.close
WshShell.Run "notepad.exe " & fName
 
Set fso = Nothing
set Wshshell = Nothing

который вычисляет (в данном примере пишет в txt) sID (он ведь у всех разный).
Как можно в этом же скрипте (или аналогичный батник) организовать загрузку данных в реестр, учитывая вычисленный sID?

Всего записей: 253 | Зарегистр. 09-12-2006 | Отправлено: 20:45 22-04-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AlessTO
Для того, чтобы записать что-либо в ветку HKU\S-1-5-21.., которая относится к юзеру, под которым в данный момент запущена Windows, совершенно не обязательно знать SID этого юзера. Его ветка HKU\S-1-5-21... полностью находится в HKCU. То есть в .reg файле надо поменять все упоминания о HKU\S-1-5-21...\КЛЮЧ на HKCU\КЛЮЧ.

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 21:36 22-04-2007
AlessTO

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
большой сенькс

Всего записей: 253 | Зарегистр. 09-12-2006 | Отправлено: 23:41 22-04-2007
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тут один месяц и пять страниц назад uart78 спрашивал:

Цитата:
Подскажите , как запускать любую прогу с командной строки свернутой в трей

Я сейчас именно на такую и наткнулся случайно, 4 Кб всего
Trayconizer -minimize notepad.exe
Самому uart78 наверно уже не надо, но на всяк случай, если вдруг еще кому понадобится, дам тут линк... http://www.whitsoftdev.com/trayconizer/

Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 14:47 29-04-2007
maklab



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
возможно ли что б bat файл создавал каталог в формате даты, но к примеру 2007-04-29 ? У меня что т оне выходит ни как....

Всего записей: 1774 | Зарегистр. 20-08-2006 | Отправлено: 18:47 29-04-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
maklab
Какой у тебя формат даты? (запусти "echo %date%")

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 18:50 29-04-2007
maklab



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

Всего записей: 1774 | Зарегистр. 20-08-2006 | Отправлено: 20:01 29-04-2007
Elroir



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

Код:
 
md %date:~6,4%-%date:~3,2%-%date:~0,2%
 

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 20:09 29-04-2007
maklab



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
опа на, неделя мучений спасибо!!!  Я уже на AutoITе думал все переделывать

Всего записей: 1774 | Зарегистр. 20-08-2006 | Отправлено: 20:30 29-04-2007
ZloyBehemoth



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скажите, можно из комстроки создать запланированное задание (sheduled task) которое должно выполняться от имени локального пользователя?

Всего записей: 242 | Зарегистр. 12-10-2004 | Отправлено: 07:30 02-05-2007
uZver



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ZloyBehemoth
at /?
Команда AT предназначена для запуска команд и программ в указанное время
по определенным дням. Для использования команды AT необходимо, чтобы была
запущена служба расписаний.

Всего записей: 195 | Зарегистр. 10-10-2003 | Отправлено: 09:47 02-05-2007
ZloyBehemoth



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

Цитата:
at /?

 
Это понятно. Исполнятся это задание будет от системной учетной записи. А мне надо что бы исполнялось от имени локального пользователя.

Всего записей: 242 | Зарегистр. 12-10-2004 | Отправлено: 11:00 02-05-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ZloyBehemoth
А вариант запустить службу Планировщик заданий от имени локального пользователя тебя устроит?

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:08 02-05-2007
ZloyBehemoth



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

Цитата:
А вариант запустить службу Планировщик заданий от имени локального пользователя тебя устроит?

 
Нет. Там будут задания которые должны запускаться как обычно, т.е. под системной уч. записью.

Всего записей: 242 | Зарегистр. 12-10-2004 | Отправлено: 11:18 02-05-2007 | Исправлено: ZloyBehemoth, 11:19 02-05-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ZloyBehemoth
Тогда обрати внимание на nnCron - там все задания в текстовом виде - можно сформировать и добавить к нужному файлу. nnCron автоматически подхватит изменение
 
Второй вариант - в задании запускать батничек первой строкой которого идет RunAS

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:30 02-05-2007
   

Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru