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

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

Автор: Gizmentiy
Дата сообщения: 06.08.2009 12:10
Добрый день!
Помогите с такой задачей...
Есть директория в ней есть файл вида ???.zip
как имя этого файла присвоить переменной SET Fname1=???.zip
Имя самого файла заведомо не извесно, только количество символов.
Спасибо!
Автор: 01MDM
Дата сообщения: 06.08.2009 13:26
garri671
Жирным выделена ошибка, дальше вариант с пингом.

Код:
@echo off
chcp 1251
setlocal

pushd "%~dp0\.."

for /f %%i in (comp.txt) do (
echo Now try controller: %%i
ping -n 1 %%i 1>nul && call reg_.bat || echo Ping %%i error & echo.
)
Автор: FIZIK
Дата сообщения: 06.08.2009 14:01
Люди, помогите решить задачку.
Есть задача прибивать все терминальные сессии кроме сессий пользователей из определенного списка.
Список пользователей я получаю так:
Список активных сессий:
query user |grep "rdp#"| gawk "{print $3,$1}"|sed "s/>//g"
Список отключенных сессий:
query user |grep -v "rdp#"| gawk "{print $2,$1}"|sed "s/>//g"

вывод в формате
IDСесссии Username

Хочу направить в файл ID cсессий, а потом задействовать след-ю конструкцию:
for /F %%i IN (имя файла с ид сессий) DO reset session %%i

Что дальше, ума не приложу. Надо профильтровать вывод на определенных пользователей. Но к сожалению grep напрочь отказывается воспринимать кириллицу. А у меня 90% имен пользователей на русском.

Поможите, люди добрые, советом.
Автор: Gizmentiy
Дата сообщения: 06.08.2009 14:02
01MDM

Спасибо Большое!
Автор: 01MDM
Дата сообщения: 06.08.2009 14:18
FIZIK

Цитата:
grep напрочь отказывается воспринимать кириллицу.

findstr воспринимает.

Кстати, проверил, grep тоже воспринимает:

Код:

C:\> > chcp 1251
Текущая кодовая страница: 1251

C:\> for %i in (Иван Ivan Петр Petr) do @echo %i 1>>1.txt

C:\> for %i in (Иван Петр) do @grep %i 1.txt
Иван
Петр

С:\>
Автор: FIZIK
Дата сообщения: 06.08.2009 14:34
01MDM
Спасибо человечище!!! chcp 1251 - то что надо.
Автор: Joo1z
Дата сообщения: 06.08.2009 16:15

Цитата:
При этом пишется - сопоставление между именами пользователей и идентификаторами безопасности не было произведено

Комп в домене? Если да то проверяй группы. Лучше вводить конкретно DOMAIN\Administrators или %Computername%\Administrators в зависимости от того что нужно. Если выполняешь с другого компа, то тоже нужно быть уверенным с каким SID идет сравнение с computer1\Administrators или comuter2\Administrators.
Автор: garri671
Дата сообщения: 07.08.2009 05:51
01MDM

Цитата:
Жирным выделена ошибка, дальше вариант с пингом

Спасибо, мой вариант тоже заработал, дело было в пробеле. Подскажи как проще чтобы все это в файл писалось
Автор: 01MDM
Дата сообщения: 07.08.2009 08:01
garri671

Цитата:
Подскажи как проще чтобы все это в файл писалось

Что должно записываться в файл? Если весь вывод батника, то запускай его:

Код:
C:\> your.cmd 1>out.txt 2>&1
Автор: SeriouSShat
Дата сообщения: 07.08.2009 09:22
smirnvlad спасибо за помощь, но не работает так как надо.
Решил зайти с другой стороны.
Есть батник (отсилает на почту содержимое файла %File%, имя созданого файла каждый раз новое. В данном случае, текст сообщения будет виглядеть как строчка - ***** HP OV NNM *****):
[more]
@echo off
Set File=test.txt
Set Num=1
:Loop
If Not Exist "D:\HP\%File%" Goto EndLoop
For %%a In ("D:\HP\%File%") Do (
Set FName=%%~na
Set FExt=%%~xa)
Set NewFName=%FName%_%Num%%FExt%
Set /a Num=%Num% + 1
(If Exist "D:\HP\%NewFName%" Goto Loop) && (Set NewFName=%NewFName%)
Set File=%NewFName%
:EndLoop
Echo %File%
echo ***** HP OV NNM ***** >> D:\HP\%File%
set node=%1
SHIFT
D:\HP\postie\postie.exe -host:my.mail.com -port:25 -to:my@mail.com -from:NNM1@mail.com -verify -s:"NODE DOWN! Alert for %node%." -file:D:\HP\%File%
[/more]

Батник запускается со следующими параметрами:
D:\HP\traptomail\nodedown.bat kr-c2821-1 Host:kr-c2821-1 State:NodeDown Status:Critical Address:10.10.10.10

Как нужно изменить батник, чтобы он ниже фразы ***** HP OV NNM ***** добавлял указаные выше параметры, и в результате отсылал на почту вот этот текст в теле сообщения:

***** HP OV NNM *****
Host:kr-c2821-1
State:NodeDown
Status:Critical
Address:10.10.10.10

???
Автор: garri671
Дата сообщения: 07.08.2009 10:36
01MDM
Доброго времени суток! И еще вопросик

Цитата:
for /f %%i in (comp.txt) do (
echo Now try controller: %%i
ping -n 1 %%i 1>nul && call reg_.bat || echo Ping %%i error & echo.

как модернизировать код, чтобы сканирование происходило домена, а не из списка
Автор: Joo1z
Дата сообщения: 07.08.2009 10:46
garri671
Смотри, я 2 станицы назад писал.
Автор: garri671
Дата сообщения: 07.08.2009 10:56
Joo1z
спасибо

Цитата:
for /f %i in ('net view | findsr \\') do @sc %i start messenger

какую функцию в данном случае выполняет @
Автор: vu1tur
Дата сообщения: 07.08.2009 11:09
garri671

Цитата:
какую функцию в данном случае выполняет @

не выводит выполняемую команду на экран
Автор: garri671
Дата сообщения: 07.08.2009 11:57
Joo1z

Цитата:
for /f %i in ('net view | findsr \\') do @sc %i start messenger

Данная строка не работает -непредвиденное появление |
Автор: 01MDM
Дата сообщения: 07.08.2009 14:26
garri671

Цитата:
Данная строка не работает -непредвиденное появление |


Экранируй "^|"
Автор: SeriouSShat
Дата сообщения: 07.08.2009 17:49
Почему, когда я выполняю команду:
traptomail.bat "my@mail.ua" NodeDown asa Host:asa.ukr.ua State:NodeDown Status:Critical Address:10.0.0.10 "Thu Aug 06 15:22:05 EEST 2009"
сам traptomail.bat:
[more]
@echo off
set filename=temp.txt
echo ***** HP OV NNM ***** > D:\HP\traptomail\%filename%
echo. >> D:\HP\traptomail\%filename%
set email=%1
set alarm=%2
set node=%3
:Loop
IF "%4"=="" GOTO Continue
echo %4 >> D:\HP\traptomail\%filename%
echo. >> D:\HP\traptomail\%filename%
SHIFT
GOTO Loop
:Continue
"D:\HP\traptomail\postie\postie.exe" -host:my.mail.ua -port:25 ^
-to:%email% -from:NNM@mail.ua -verify -s:"%alarm%! Alarm for %node%." ^
-file:D:\HP\traptomail\%filename% -rm
[/more]
Я получаю следующую ошибку:
Aug was unexpected at this time.
Если убрать вот это - "Thu Aug 06 15:22:05 EEST 2009", то все работает.
В чем может быть проблема???
Автор: king_stiven
Дата сообщения: 09.08.2009 13:54
Есть какая нибудь простенькая утилитка, чтобы сравнивала файлы с одинаковыми именами и учитывая структуру подкаталогов, но не как fc, а сразу останавливалась при первой же ошибке и выдавала сообщенеие или завершалось с errorlevel
Автор: garri671
Дата сообщения: 10.08.2009 04:57
01MDM

Цитата:
Экранируй "^|"

Увы непомогло, ошибка синтаксиса
Автор: 01MDM
Дата сообщения: 10.08.2009 07:29
garri671
Там еще одна ошибка в команде findstr пропущена "t"
Автор: garri671
Дата сообщения: 10.08.2009 07:39
01MDM

Цитата:
Там еще одна ошибка в команде findstr пропущена "t"

Все равно не работает - Ошибка в синтаксисе, очень нужно!!
Автор: 01MDM
Дата сообщения: 10.08.2009 07:52
garri671
Так не получается?

Код:
C:\> for /f %i in ('net view ^| findstr \\\\') do @sc %i start messenger
Автор: garri671
Дата сообщения: 10.08.2009 08:42
01MDM
Вот это по нашему, спасибо

Добавлено:
01MDM

Цитата:
for /f %i in ('net view ^| findstr \\\\') do @sc %i start messenger

Столкнулся с проблемкой команда net view не видит все машины домена. Как выйти из положения? Может кто нибудь знает?
Автор: SeriouSShat
Дата сообщения: 10.08.2009 16:19
Помогите все же решить проблему с вставкой даты в сообщение (пост от - Отправлено: 20:49 07-08-2009).
Автор: wolf0425
Дата сообщения: 10.08.2009 16:52

Цитата:
Почему, когда я выполняю команду:
traptomail.bat "my@mail.ua" NodeDown asa Host:asa.ukr.ua State:NodeDown Status:Critical Address:10.0.0.10 "Thu Aug 06 15:22:05 EEST 2009"
Я получаю следующую ошибку:
из-за строки IF ""Thu Aug 06 15:22:05 EEST 2009""=="" GOTO Continue
поменяй ограничители на другие, например так IF /%4/==// GOTO Continue
Автор: ortoror
Дата сообщения: 10.08.2009 17:56
здравствуйте..
помогите пожалуйста, мне нужно 2 батника:

первый) чтобы делал бек-ап файла хостс (%windir%/system32/drivers/etc/ hosts), если бекап уже существует - то просто закончить работу...
проблема в следующем - у меня почему-то не получается копировать файл у которого нету разрешения..

второй) чтобы этот бекап вогружался на место старого hosts.
Проблема - запрет удаления и перезаписи файла hosts.

заранее благодарю
Автор: 01MDM
Дата сообщения: 10.08.2009 18:34
ortoror
1:

Код:
@echo off
pushd "%windir%\system32\drivers\etc"
if not exist ~hosts copy hosts ~hosts
popd
Автор: ortoror
Дата сообщения: 10.08.2009 19:26

Цитата:
@echo off
pushd "%windir%\system32\drivers\etc"
if not exist ~hosts copy hosts ~hosts
popd

на это пишет
"hosts
Не удается найти указанный файл
Скопировано файлов: 0."
----------------------------------------------------
прошу прощения. все само собой снова заработало
Автор: Serhi84
Дата сообщения: 11.08.2009 09:57
Подскажите ,как изменить часть имени файла? То есть к примеру в папке есть файлы с именем EJxxxx, необходимо изменить имена на ELxxxx ( в имени поменять J на L) и к измененному имени добавить текущую дату.

чувствую как то через % %%~ni:EJ=EL % делается, но не получается...
Автор: 01MDM
Дата сообщения: 11.08.2009 14:10
Serhi84
Либо выноси за пределы цикла, либо назначай переменную в самом цикле:
1:

Код:
@echo off
setlocal
for /f "tokens=*" %%i in ('dir /b EJ*') do call:rename "%%i"
goto:eof

:rename
set "file=%~1"
ren %1 "%file:EJ=EL%"

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


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