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

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

Автор: slech
Дата сообщения: 10.04.2007 16:39
Всем привет.
Есть такая задачка - установить агента на десяток машин в сети.
psexec \\192.168.0.1 -c ocs.exe

Надо проделать это на всех машинах.
psexec мложет брать IP из файла - но делает видимо это кривовато.

Что бы проверить необходимо написать батник который вместо неё будет брать IP.

psexec \\192.168.0.1 -c ocs.exe - выполнит данную команду для всех IP в файле IP.txt.

Спасибо.
Автор: BasiL
Дата сообщения: 10.04.2007 16:44
можно закрыть этот топик и переехать в соседний.
Попутно дав линк на этот в версии "для печати". Как вариант.
Автор: KapralBel
Дата сообщения: 10.04.2007 16:50
Elroir

Цитата:
Люди не найдут - так эти темы хотя-бы в "Microsoft Windows" на виду...

Закрыть его, а в шапке большими красными буквами - ссылка на параллельный топик

А то нам все равно куда отвечать, а людям проще спросить в одном месте





Добавлено:
Кстати до кучи - некоторые проблемы используя только батничнки не решишь.
Приходится применять либо WSH, либо PowerShell
Автор: slech
Дата сообщения: 10.04.2007 17:00
ВОт вроде нашёл - в прошлом топе мне уже помагли

for /F %%a in (IP.txt) do psexec \\%%a -c ocs.exe >>result.txt



C:\>psexec \\194.168.64.13 -c ocs.exe 1>>result.txt
А вот почему в консоли такое ? Откуда единица ?
И соответственно файл result.txt - пустой.
Автор: KapralBel
Дата сообщения: 10.04.2007 17:02
slech

Код:
@Echo Off
For /F "delims=" %%a (IP.txt) Do psexec \\%%a -c ocs.exe
Автор: Elroir
Дата сообщения: 10.04.2007 17:06
slech

Цитата:
А вот почему в консоли такое ? Откуда единица ?

Это cmd так показывает перенаправление стандартного вывода в файл.

Добавлено:
А что psexec должен выдавать в файл?
Автор: slech
Дата сообщения: 10.04.2007 17:16
KapralBel
Спасибо. Ща порверим.
Elroir
Мда, действительно ничего.
А в консоли пишет успешно или нет хотя при попытке перенаправитьэто в файл там полюбому пусто.
Автор: KapralBel
Дата сообщения: 10.04.2007 17:22
slech

Код: @Echo Off
For /F "delims=" %%a (IP.txt) Do psexec \\%%a -c ocs.exe >>result.txt 2>&1
Автор: Elroir
Дата сообщения: 10.04.2007 17:32
slech

Цитата:
А в консоли пишет успешно или нет хотя при попытке перенаправитьэто в файл там полюбому пусто.

Попробуй в конце строки добавить "2>&1" - это перенаправление потока ошибок в стандартный вывод (а он идет в файл)


Добавлено:
KapralBel
Не увидел, что ты уже это написал
Автор: Lutvun
Дата сообщения: 10.04.2007 19:28
Извиняюсь за ламерский вопрос!!!
Есть такой батник:

Код: @echo off
get c "Enter a Drive letter : " ABCDEFGHIJKLMNOPQRSTUVWXYZ /a241 /vdrive
echo You have choosen Drive %drive%:
Автор: igor_andreev
Дата сообщения: 10.04.2007 19:50
Lutvun

Цитата:
П.С. Батник исполняетса под виндой.

Командная строка в Windows и DOS - две большие разницы. Хотя внешне похожи, белые буковки на черном фоне... Это кажется часть какого то батника из топика про Hiren's Boot CD? Тот батник(если я правильно понял, откуда ты его взял) изобилует всякими ctty con и пр., в Windows по другому выбор диска делается.
Автор: Lutvun
Дата сообщения: 10.04.2007 20:16
igor_andreev

Цитата:
Хотя внешне похожи, белые буковки на черном фоне...

Ну издеватса то ненадо

Цитата:
Это кажется часть какого то батника из топика про Hiren's Boot CD?

Да вытащил из хирента. И вродебы всё работает, только переменная неподставляетса.

Цитата:
в Windows по другому выбор диска делается.

Пример можно?
Автор: igor_andreev
Дата сообщения: 10.04.2007 20:31
Lutvun

Цитата:
Ну издеватса то ненадо

Не издеваюсь, это действительно небо и земля

Цитата:
Пример можно?

Ну в 2000/XP так

set /p my_drive=Enter drive letter(CDEFG...)?
echo you enter %my_drive%

В DOS это работать не будет.




Добавлено:
У меня Hirent-a нет, я даже не знаю, что там в качестве get выступает, get.bat какой-нить или get.com, а тоб подсказал.
Автор: Lutvun
Дата сообщения: 10.04.2007 20:53
igor_andreev
Спасибо, больше мне и ненужно.
Автор: ZloyBehemoth
Дата сообщения: 11.04.2007 07:51
KapralBel
Elroir
igor_andreev

СПАСИБО БОЛЬШОЕ! Все получилось!

Через вывод regedit не удалось получить ИД, но reg от XP сделал все как надо.
И еще, как вставить по echo пустую строчку в файл.
Автор: igor_andreev
Дата сообщения: 11.04.2007 08:06
ZloyBehemoth
Точку после echo поставь
echo.>>file.txt
Автор: Lutvun
Дата сообщения: 12.04.2007 23:06
Как выглядит переменная для "Мои документы"? Нашол в инете такую: %USERPROFILE%\Мои документы, но она актуальна только для руской винды, а мне нужно чтоб визьде.
Автор: 01MDM
Дата сообщения: 14.04.2007 12:37
Такой системной переменной нет но можно определить переменную подходящую для любой локализации


Код:
@ECHO OFF
chcp 1251 >nul
for /f "skip=4 delims=\ tokens=4" %%i in ('reg query "hkcu\software\microsoft\windows\currentversion\explorer\shell folders" /v personal') do (
set MyDocs=%i%
)
echo %MyDocs%
pause
Автор: Lutvun
Дата сообщения: 14.04.2007 12:54
01MDM
Некатит. Переменная не присваеваетса.
Автор: 01MDM
Дата сообщения: 14.04.2007 12:58
Или если предыдущий вариант не прокатить (пробовал на 4NT) то:


Код:
@ECHO OFF
chcp 1251 >nul
for /f "delims=\ tokens=4" %%i in ('reg query "hkcu\software\microsoft\windows\currentversion\explorer\shell folders" /v personal ^| findstr /s /i reg_sz') do (
set MyDocs=%i%
)
echo %MyDocs%
pause
Автор: Elroir
Дата сообщения: 14.04.2007 13:14
Lutvun
Какая у тебя версия Windows?
Автор: Lutvun
Дата сообщения: 14.04.2007 17:48
Elroir
Хрюша профешынал СП2 рус + обновления
01MDM
И этот некатит. вместо значения пробел.
Автор: Elroir
Дата сообщения: 14.04.2007 19:05
Lutvun
Видимо так должно работать:

Код:
@echo off
chcp 1251>nul
for /f "tokens=2*" %%i in ('reg query "hkcu\software\microsoft\windows\currentversion\explorer\shell folders" /v personal ^| findstr /s /i reg_sz') do (
set MyDocs=%%j
)
echo %MyDocs%
Автор: Lutvun
Дата сообщения: 14.04.2007 19:24
Elroir
ДАДАДА. Все работает, спасибо!!!!
Автор: vshersh
Дата сообщения: 18.04.2007 17:02
Помогите, плз, в переменную внести полный путь к текущему батнику

Elroir
Спасибо!
Автор: Elroir
Дата сообщения: 18.04.2007 17:05
vshersh

Код:
set current=%~dp0
Автор: vshersh
Дата сообщения: 18.04.2007 17:53
Elroir
Всетаки не могу осилить
Хочу написать батник, который будет в системную переменную Path добавлять текущую директорию (желательно без повторов при многократном выполнении). Наваял такой текст:

Код: @echo off
chcp 1251>nul
for /f "tokens=2*" %%i in ('reg QUERY HKEY_CURRENT_USER\Environment /v path ^| findstr /s /i reg_sz') do (
set MyPath=%%j
)
set current=%~dp0
set MyPath="%MyPath%;%current%"

reg ADD HKEY_CURRENT_USER\Environment /v path /f /d %MyPath%
pause
Автор: Elroir
Дата сообщения: 18.04.2007 19:35
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"
)
Автор: vshersh
Дата сообщения: 18.04.2007 20:18
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"
Автор: Elroir
Дата сообщения: 18.04.2007 20:28
vshersh

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

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

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879

Предыдущая тема: Problemi s zagruzkoy XP!


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