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

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

Автор: New_KoMa
Дата сообщения: 17.06.2009 16:52
здравствуйте, помогите написать батник..
требуется извлечь из ветки регистра, например из HKLM\SOFTWARE\MyProg, значение ключа, например ключ=ExeсString - полный путь файла, и запустить это значение.
Автор: Rush
Дата сообщения: 17.06.2009 17:40
New_KoMa
из комстроки:

Код: cmd /c for /f "tokens=2*" %a in ('reg query "HKLM\SOFTWARE\MyProg" /v ExeсString ^|find /i "ExeсString"') do (start "" "%b")
Автор: New_KoMa
Дата сообщения: 17.06.2009 19:24
Rush

Цитата:
из комстроки:

спасибо за отклик, вот что выдает:
c:\>cmd /c for /f "tokens=2*" %a in ('reg query "HKLM\SOFTWARE\MyProg" /v ExecString ^|find /i "ExecString"') do (start "" "%b")
Непредвиденное появление: |.
Автор: Ortios
Дата сообщения: 17.06.2009 19:35
New_KoMa
попробуй так:

Код: for /f "tokens=2*" %a in ('reg query "HKLM\SOFTWARE\MyProg" /v ExecString ^|find /i "ExecString"') do (start "" "%b")
Автор: New_KoMa
Дата сообщения: 17.06.2009 19:39
огромное спасибо, все работает!
Автор: Ortios
Дата сообщения: 17.06.2009 20:01
Люди, извиняюсь за оффтоп, есть у кого-нить книжка А.Попова "Администрирование Windows с помощью WMI и WMIC" , есстесно в цифровом виде, поделитесь ссылочкой.
Автор: Maza_Faka
Дата сообщения: 18.06.2009 06:53
Ortios
Во первых, для этого есть отдельный раздел
А во вторых Google ещё не отменили
Автор: ScreamWolf
Дата сообщения: 18.06.2009 09:24
HaK1R

Цитата:
в смысле из "Привет тебе.lnk" нкжно "тебе .lnk"?

из "Привет тебе.lnk" получить "Привет.lnk"

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

Код:
set ServerName=192.168.0.1
for /f "tokens=1* delims==" %%h in ('set ServerName') do (
ping -n 1 "%%i" | find /i "TTL="
)
pause

попробовал вот что пишет


Цитата:
C:\>set ServerName=10.150.101.1

C:\>for /F "tokens=1* delims==" %h in ('set ServerName') do (ping -n 1 "%i" |
find /i "TTL=" )

C:\>(ping -n 1 "10.150.101.1" | find /i "TTL=" )
Ответ от 10.150.101.1: число байт=32 время<1мс TTL=31

C:\>pause
Для продолжения нажмите любую клавишу . . .

т.е. find работает... но если подставлять после if %errorlevel% - то не хочет работать ((


Цитата:
это ничего не меняет, тоже самое

согласен, но почему-то без "==" не работает ((

Цитата:
вместо коментов ставишь свой код

ОГРОМНОЕ СПАСИБО - РАБОТАЕТ НА УРА =)


Добавлено:
HaK1R


Цитата:
вместо коментов ставишь свой код

А можно ли после того как 1.bat определил 2.bat его PID записать его например в лог или реестр... необходимо для того что бы при запуске например отдельного батника 3.bat он в логе искал pid и завершал данный процесс (2.bat)...

Добавлено:
Подскажите токой вопрос...

мое представление:
работа ведеться с батником... в батником создается скрипт и запускается
сам скрипт это появление окна с 2-я кнопками
текст на кнопках должен быть мой! т е не ОК и CANCEL и т.д. лично в моем случае что-то вроде "PC" и "ID" и в зависимости от выбора пользователем кнопки обратно в батник возвращаеться код типа 0 или 1 или там переменная ну в общем как батнику потом определить какую клавишу выбрал юзер...

вот

думаю нормально поставил вопрос... не ругайтесь зря...
Автор: HaK1R
Дата сообщения: 18.06.2009 12:24
ScreamWolf
я вроде понял в чем дело

Код: setlocal enabledelayedexpansion
set ServerName=192.168.0.1
for /f "tokens=1* delims==" %%h in ('set ServerName') do (
set /a error=1
for /f "tokens=*" %%i in ('ping -n 1 "%%i" ^| find /i "TTL=" 2>&1') do (set /a error=0)
if !error!==1 (
echo %date% %time:~0,8% Сервер %%i - недоступен
) else (
echo %date% %time:~0,8% Сервер %%i - доступен
)
)
Автор: o00oalex
Дата сообщения: 18.06.2009 15:27
Здравствуйте! У меня вопрос к знатокам. Как реализавать в bat или cmd запуск mstsc.exe с вводом ip, логина и пароля. Чтобы сразу запускался консольный вариант и не спрашивал данные пользователя. Спрашиваю потому что параметрами самого mstsc такого не сделать. Вариант с сохранением настроек в файл rdp не предлагать, т.к. предполагается запускать этот скрипт на др. машинах, а в этом случае пароли в rdp сбрасываются. Спасибо.
Автор: HaK1R
Дата сообщения: 18.06.2009 16:35

Цитата:
в смысле из "Привет тебе.lnk" нкжно "тебе .lnk"?

из "Привет тебе.lnk" получить "Привет.lnk"


Работает только на одном уровне

Код: @echo off
pushd "C:\1\"
for /f "tokens=1*" %%a in ('dir /b *.lnk') do ren "%%~fa %%b" "%%~a%%~xb"
popd
Автор: DimaMag
Дата сообщения: 19.06.2009 07:18
Доброго времени суток. Если не сложно, подсобите.
Задача
Есть многотомный архи созданный архиватором 7z , количество томов не постоянно. Нужно отправить его по почте причём каждый том отправляется отдельно программой postie. Как это написать в bat ?

------------
Заранее спасибо.
Автор: vasijapupkin
Дата сообщения: 19.06.2009 14:05
Подскажите, пожалуйста, как можно обработать строку содержащую путь, чтобы удвоить слеши. Например:

На входе: C:\WINDOWS\SYSTEM32

На выходе: C:\\WINDOWS\\SYSTEM32
Автор: 01MDM
Дата сообщения: 19.06.2009 14:55
vasijapupkin

Код:
set "somepath=C:\Windows\system32"
set "somepath=%somepath:\=\\%"
echo %somepath%
Автор: vasijapupkin
Дата сообщения: 19.06.2009 16:14
01MDM


Цитата:
Код:
set "somepath=C:\Windows\system32"
set "somepath=%somepath:\=\\%"
echo %somepath%


Огромное спасибо! Не понял как это работает, но премного благодарен за столь оперативный ответ.

Update:
Почитал хелп. Как обычно, все гениальное просто.
Автор: bredonosec
Дата сообщения: 22.06.2009 14:44
в общем, есть задача, которую как понимаю, батником решить можно:

собрать имена включенных машин поддомена
на всех стартануть службу сообщений,
послать от себя указанное заранее (переменной чтоб запрашивало) сообщение
остановить службу сообщений

старт службы знаю, sc start messenger
послать - тож знаю, net send [кому, нетбуй имя] [что]

- а в остальном - дремучий лес, толстые пертизаны ((
Автор: waterbladeMASTER
Дата сообщения: 22.06.2009 15:08
Люди добры помогите плиззз, ниче не получается(

нужно написать bat-скрипт который выводит на экран список файлов в папке %1 и ее подпапках, длина пути к которым (вместе с именем файла) превышает 230 символов. за основу взять : dir /s /b
Автор: o00oalex
Дата сообщения: 22.06.2009 16:36
Выручайте!!!
Как прописать в батнике пароль, для последующей вставки, в котором содержутся символы ^ % # $ и т.д. Как прописать пробел я знаю - надо весь текст заключить в %. А вот как быть с этими знаками?
Автор: HaK1R
Дата сообщения: 22.06.2009 22:00
waterbladeMASTER
не проверял

Код: @echo off
pushd "%~1"
for /f "tokens=*" %%i in ('dir /s /b') do call r "%%~fi"
pause
popd
goto :EOF

r
set "name=%~1"
if not "%name%"=="%name:~0,230%" (echo %name%)
goto :EOF
Автор: waterbladeMASTER
Дата сообщения: 23.06.2009 11:48
Hak1R все конечно гуд!)) но мне надо это дело через DIR используя ключи /s /b.
Автор: ScreamWolf
Дата сообщения: 23.06.2009 12:51
HaK1R

Цитата:
setlocal enabledelayedexpansion
set ServerName=192.168.0.1
for /f "tokens=1* delims==" %%h in ('set ServerName') do (
set /a error=1
for /f "tokens=*" %%i in ('ping -n 1 "%%i" ^| find /i "TTL=" 2>&1') do (set /a error=0)
if !error!==1 (
echo %date% %time:~0,8% Сервер %%i - недоступен
) else (
echo %date% %time:~0,8% Сервер %%i - доступен
)
)

не работает =((

а за
Цитата:
@echo off
pushd "C:\1\"
for /f "tokens=1*" %%a in ('dir /b *.lnk') do ren "%%~fa %%b" "%%~a%%~xb"
popd

огромное СПАСИБО, все работает как часы!!!

Добавлено:
HaK1R
почему-то ругаеться на ... "выделено красным цветом"
удалив, получил желаемое! СПАСИБО...!

Цитата:
setlocal enabledelayedexpansion
set ServerName=192.168.0.1
for /f "tokens=1* delims==" %%h in ('set ServerName') do (
set /a error=1
for /f "tokens=*" %%i in ('ping -n 1 "%%i" ^| find /i "TTL=" 2>&1') do (set /a error=0)
if !error!==1 (
echo %date% %time:~0,8% Сервер %%i - недоступен
) else (
echo %date% %time:~0,8% Сервер %%i - доступен
)
)



Добавлено:
ОШИБОЧКА!!!

батник почеку-то выводит положительный результат проверки сервера даже в то время когда такого ip в сети даже нет...

Т.е. получается всегда доступны все сервера (((
Автор: volser
Дата сообщения: 23.06.2009 14:06
Есть некий бат файл. Можно ли настроить так что бы результат выполнения донного файла выводился на экран и в файл одновременно? Или же сначала на экран, а после выполнения результат скидывало в файл?
Автор: 01MDM
Дата сообщения: 23.06.2009 14:09
ScreamWolf
Попробуй такую конструкцию:

Код:
@echo off
1>nul ping -n 1 192.168.0.1 && (
echo Пингуется
) || (
echo Не пингуется
)
Автор: 01MDM
Дата сообщения: 23.06.2009 19:34
volser

Цитата:
так что бы результат выполнения донного файла выводился на экран и в файл одновременно?

Ищи mtee.exe, tee.exe
Автор: Cosmogor
Дата сообщения: 23.06.2009 19:34
Доброго всем времени суток.

У меня вопрос:
Возможно ли открыть своиство папки
сразу же на (Типы файлов)
с помощью батника?
Ниже код открывает свойство папки (Общие)

Код:
RunDll32.exe shell32.dll,Options_RunDLL 0

или прийдётся довольствоваться Свойство папки (Общие)

Спс.
Автор: HaK1R
Дата сообщения: 23.06.2009 21:01
ScreamWolf

Цитата:
батник почеку-то выводит положительный результат проверки сервера даже в то время когда такого ip в сети даже нет...

Т.е. получается всегда доступны все сервера (((

думаю вариант 01MDM будет нормально работать

Cosmogor

Цитата:
Ниже код открывает свойство папки (Общие)

по-моему этот вопрос требует знание не батников, а знание команд rundll32.
Автор: vitrzn
Дата сообщения: 24.06.2009 02:11
Уважаемые, подскажите возможно ли с помощью батника сделать так :

есть папка 111 , в ней программа (качалка) создаёт временные папки с файлами, после скачивания файла в папке 111 остаётся временная папка с файлом *.txt (название файла и папки может быть ЛЮБЫМ).
Задача:
проверить содержимое вложенных папок в 111 и если во вложенной папке есть только один файл *.txt , то удалить эту папку.
Ну или попроще, если размер вложенной папки не более 100кб - удалить .

p.s. как удалять пустые папки я знаю, а вот как удалить не пустые, но уже не нужные - нет.
Автор: HaK1R
Дата сообщения: 24.06.2009 08:26
waterbladeMASTER

Цитата:
о мне надо это дело через DIR используя ключи /s /b

не совсем понял, как это должно выглядеть. по-моему я использовал DIR с ключами /s /b


Добавлено:
vitrzn

Цитата:
если размер вложенной папки не более 100кб - удалит



Код: @echo off
pushd "c:\jkdjlkd\111\"
for /f "tokens=*" %%a in ('dir /b /ad') do (
if %%~za LEQ 102400 (
del /f /s /q /a "%%~fa"
rmdir /q /s "%%~fa"
)
)
Автор: sanni00015
Дата сообщения: 24.06.2009 14:14
Доброго времени суток.
Помогите разобраться вот с чем, в окне MS-DOS приглашение выглядит так
C:\Documents and Settings\user\_
, user имеет прова Администратора, смена на С:\ не проходит
Видимо дело в том, что ОСь Pirer Pen Edition и там это сделанно сборщиком, можете подсказать как исправить?
Автор: goletsa
Дата сообщения: 24.06.2009 15:37
Ибо вы уже находитесь на C:\

cd ..\..\ в помощь.

Это стандартное поведение интерпретатора.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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