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

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

Автор: 01MDM
Дата сообщения: 15.07.2008 12:22
igor_andreev

Цитата:
У меня на английской Windows там тоже 419 стоит


Странно, считал что если русская локаль, то и операционка русская. Может у тебя с MUI?

Вот посмотрел отличную от:
http://www.pcreview.co.uk/forums/thread-1580899.php

А у американцев 409:
http://technet2.microsoft.com/windowsserver/en/library/f72edc1a-83a7-4da2-81ff-ae0b656886e51033.mspx?mfr=true
Автор: igor_andreev
Дата сообщения: 15.07.2008 13:23
01MDM

Цитата:
Может у тебя с MUI?

Без MUI. Просто все в региональных настройках установлено для корректного отображения русского текста повезде, язык для неюникодных программ и т.п.
Автор: 01MDM
Дата сообщения: 15.07.2008 13:42
igor_andreev

Наверное ты прав. А что показывает:

Код:
wmic os get oslanguage /value
Автор: JohnRD
Дата сообщения: 15.07.2008 14:01
добрый день подскажите как простой батник написать
не доходит до меня ни как.


Код: for /f "tokens=1" %%a in (list1.csv) do ping %%a
если не пингуется то echo >result.txt
если пингуется то psexec \\%%a 1.cmd
Автор: igor_andreev
Дата сообщения: 15.07.2008 14:36
01MDM

Цитата:
На русской 1049

На английской 1033

JohnRD
Или пинг вынеси в отдельную метку

Код:
@echo off

for /f "tokens=1" %%a in (list1.csv) do call :my_label %%a
goto :eof

:my_label
ping -n 1 %1 | find "TTL=" > nul
if not errorlevel 1 (echo %1 ok) else echo %1 error
goto :eof
Автор: JohnRD
Дата сообщения: 15.07.2008 14:42
igor_andreev
спасибо огромадное

гляньте так похоже на правду? только что накорябал


Код: for /f "tokens=1" %%a in (list1.csv) do (ping -n 1 %%a | find "TTL=" > nul
if errorlevel 1 (
echo %%a >> result.txt
) else (psexec \\%%a 1.cmd
)
)
Автор: 01MDM
Дата сообщения: 15.07.2008 14:51
igor_andreev

Цитата:
На английской 1033


С папками тоже не до конца универсально, можно через netsh

Код:
netsh diag show os /v | findstr /c:"OSLanguage = 1049" 1>nul && echo rus || echo unknown
Автор: igor_andreev
Дата сообщения: 15.07.2008 14:53
JohnRD

Цитата:
так похоже на правду?

Не очень Яж написал, хочешь использовать if errorlevel - выноси пинг в отдельную метку
Автор: JohnRD
Дата сообщения: 15.07.2008 15:02
igor_andreev

да дошло спасибо

как бы еще обработать на какой машине не выполнился psexec

есть такой вывод

Код: PsExec v1.94 - Execute processes remotely
Copyright (C) 2001-2008 Mark Russinovich
Sysinternals - www.sysinternals.com

cmd on balykov-aa...
\\domain.local\Software\1.cmd started on balykov-aa with process ID 2700.
Автор: igor_andreev
Дата сообщения: 15.07.2008 15:43
JohnRD

Цитата:
как бы еще обработать на какой машине не выполнился psexec

Как обычно, по коду возврата http://forum.sysinternals.com/forum_posts.asp?TID=233

Код:
for /f "tokens=1" %%a in (list1.csv) do call :my_label %%a
goto :eof

:my_label
ping -n 1 %1 | find "TTL=" > nul
if errorlevel 1 (
echo %1 ping error >> result.txt
) else (
psexec \\%1 ... || echo %1 psexec error >> result.txt
)
goto :eof
Автор: tolyn77
Дата сообщения: 15.07.2008 16:05
KapralBel
для чего нужен язык? что бы в локальную группу администратора добавить глобальную группу домена!
Автор: JohnRD
Дата сообщения: 15.07.2008 16:06
igor_andreev

psexec \\%1 ... || echo %1 psexec error >> result.txt

половину правды, половину нет пишет

sergeev-ss psexec error тут должен отработать
balykov-ii psexec error тут должен отработать
craft psexec error тут не должен, правильно

тоесть он сделал вид что запустил на всех машинах те которые пингуются
Автор: igor_andreev
Дата сообщения: 15.07.2008 16:22
JohnRD
Я ссылку дал на forum.sysinternals почитай там про параметр -d, попробуй с ним и без него(If you don't use the -d switch, the no-error return code will be 0. If you use -d it will be the process id), по всякому, можно вместо || еще один if errorlevel попробовать.

Код:
if errorlevel 1 (
echo %1 ping error >> result.txt
) else (
psexec \\%1 ...
if errorlevel 1 echo %1 psexec error >> result.txt
rem или if not %errorlevel%/ equ 0/ по-всякому короче
)
Автор: NIKZZZZ
Дата сообщения: 15.07.2008 16:37
Возникла такая проблема. Нужно изменить несколько байт в bin файле, не используя сторонних утилит. Debug.exe прекрасно справляется с файлами < 64 Kb , далее возникают проблемы.
Автор: JohnRD
Дата сообщения: 15.07.2008 16:46
igor_andreev

супер, сработало

я сам допустил ошибку вместо psexec \\%1 писал упорно psexec \\%a%

спасибо за помощь
Автор: igor_andreev
Дата сообщения: 15.07.2008 17:01
NIKZZZZ

Цитата:
Debug.exe прекрасно справляется с файлами < 64 Kb , далее возникают проблемы.

Ну и покроши этот файл на куски по 64Кб, измени нужный и опять собери Если прям так надо стандартными ср-ми

Код:
@echo off
echo Bj@jzh`0X-`/PPPPPPa(DE(DM(DO(Dh(Ls(Lu(LX(LeZRR]EEEUYRX2Dx=>split.com
echo 0DxFP,0Xx.t0P,=XtGsB4o@$?PIyU WwX0GwUY Wv;ovBX2Gv0ExGIuht6>>split.com
echo @}{juN?_p~KL?plrQwHDo{kA{wqLsvxsjokO@IlBjjD~slH[mHCGjA_o}s>>split.com
echo yGa]JA`LAK}gqtA]E?]}?AuxAOEEdKoA]?\E}B}?AGxA\?ETupA\E?E}oK>>split.com
echo ?A[_A[}?DuxC[EEBsoA_Hp{oAUyAq`LRablGuJAGsA__Zp~o??xaAcyAq`>>split.com
echo LRsPWg]J?HyAa_LAcoIq`C??=_MDtPj[t=rBM]hkoToms@?oo???O?0xxx>>split.com

split 2 <твой_файл
del split.com
Автор: NIKZZZZ
Дата сообщения: 15.07.2008 18:29
igor_andreev
Задача именно в том, что не использовать сторонние утилиты. split.com - сторонняя.

Автор: igor_andreev
Дата сообщения: 15.07.2008 20:28
NIKZZZZ
Вам шашечки или ехать? Любой, написанный тобой батник или скрипт - сторонний. Не было его на диске сразу после установки Windows.

Добавлено:
Теоретически можно попробовать vbs c ADODB.Stream, вроде я даже примеры где-то по инету видел. Но сам не пробовал. Как бинарный файл в текстовой перевести и обратно на vbs знаю, а вот менять значения не пробовал. И скрипт будет существенно обьемнее в плане количества строчек кода, чем шесть строчек батника, создающие split.com
Автор: NIKZZZZ
Дата сообщения: 15.07.2008 21:11
igor_andreev

Цитата:
Теоретически можно попробовать vbs c ADODB.Stream, вроде я даже примеры где-то по инету видел.

wsh - без проблем , а если его попросту нет? Vbs Js скрипты требуют наличия их поддержки.



Автор: pumpit
Дата сообщения: 16.07.2008 01:00
Нужна помощь. Есть ли возможность при появлении "Are you sure <Y/N>" в cmd.exe нажимать "Y" или "N" автоматически? В гугле не смог найти ничего подобного.
Автор: alexvsm
Дата сообщения: 16.07.2008 05:08
01MDM

Цитата:
wmic os get oslanguage /value
На русской 1049

На английской с MUI
Код: OSLanguage=1033
Автор: kyky2008
Дата сообщения: 16.07.2008 06:28
Взываю.
Есть текстовый файл, в котором нужно поменять строку содержащую дату, написал такой батник

SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
echo off
cls
set DT=%date%
set DD=%DT:~0,2%
set MM=%dt:~3,2%
set YY=%dt:~6,4%

for %%z in (%autodir%load\*.txt) do (
for /f %%i in (%%z) do (
set str=%%i
if "!str:~0,8!" NEQ "ДатаСооб" echo !str! >> 1\%%~nz%
if "!str:~0,8!" EQU "ДатаСооб" echo ДатаСооб:%DD%.%MM%.%YY% >> 1\%%~nz%
)
)


Все замечательно но в файле есть строки содержащие "", там названия организаций, в новый сформированный файл они не попадают

на пример
исходный файл содержит строку- Орг:"Пупкин и Ко"
новый файл получает строку- Орг:

Как мне получить все таки "Пупкин и Ко" в новый файл?
Автор: 01MDM
Дата сообщения: 16.07.2008 08:07
pumpit

Цитата:
Есть ли возможность при появлении "Are you sure <Y/N>" в cmd.exe нажимать "Y" или "N" автоматически?


Много зависит от программы, которая получает ответ. Если ей не нужен ввод именно с клавиатуры, то попробуй:


Код:
echo Y | program.exe
echo N | program.exe
Автор: kyky2008
Дата сообщения: 16.07.2008 08:38

Цитата:
Поменять на что?


дата меняется на текущую дату


Код: set DT=%date%
set DD=%DT:~0,2%
set MM=%dt:~3,2%
set YY=%dt:~6,4%

.....

"ДатаСооб" echo ДатаСооб:%DD%.%MM%.%YY% >> 1\%%~nz%


Автор: pumpit
Дата сообщения: 16.07.2008 08:54
Задам вопрос конкретней. Очень нужно выполнить эту команду автоматически без участия пользователя.
Сейчас выполняю так: cmd.exe /K cacls C:\windows\System32\drivers\dxapi.sys /G "Имя пользователя(без кавычек)":F
Появляется "Are you sure <Y/N>?" . Как сделать, чтобы это не появлялось или автоматически нажималось "Y" или "N".
Автор: NIKZZZZ
Дата сообщения: 16.07.2008 08:58
pumpit

Цитата:
Есть ли возможность при появлении "Are you sure <Y/N>" в cmd.exe нажимать "Y" или "N" автоматически?


Код: Echo Y | (Команда, требующая подтверждения)
Автор: 01MDM
Дата сообщения: 16.07.2008 09:25
kyky2008

Цитата:
Основной вопрос - как вывести в файл значения заключенные в ""?


В строчкe добавь кавычки, должно получиться

Код:
set "str=%%i"
Автор: tolyn77
Дата сообщения: 16.07.2008 09:53
а кто нибудь пользовался osver.exe? как ей пользоваться?
Автор: igor_andreev
Дата сообщения: 16.07.2008 10:59
tolyn77

Цитата:
как ей пользоваться?

Так, как в osver.txt написано. Если потерял текст - в гугле достаточно название набрать и уйма примеров найдется. А версия поновее называется ostest.exe. Если ты конечно osver из Windows Admin Script Tools имеешь ввиду.
Автор: kyky2008
Дата сообщения: 16.07.2008 11:34
01MDM

Цитата:


set "str=%%i"


не катит, пробывал

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Сброс пароля администратора


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