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

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

Автор: slech
Дата сообщения: 02.08.2009 13:41
01MDM
спасибо, всё заработало.
ещё раз спасибо всем кто помог.
Автор: slech
Дата сообщения: 02.08.2009 18:13
всё же вопрос есть ещё один

Цитата:

Set input_file=url_log.txt
For /F "Delims=" %%a In (%input_file%) Do Set status_code=%%a & GOTO :SC_ERRORLEVEL_NEXT

эти строки берут файл url_log.txt и перую его строку кидают в переменную окружения status_code, а в самом конце пишут её в результирующий файл.
если файла нету то мне нужно об этом както узнать например получить %ERORRLEVEL%
но у меня никак не получается вмешаться в эту конструкцию
если убрать
Цитата:
& GOTO :SC_ERRORLEVEL_NEXT

то вообще работать не хочет, если его заменяют на
Цитата:
& set status_code=%ERORRLEVEL%
так же не работает.

подскажите как получить код ошибки после операции чтения первой строки файла, т.е. если файла не оказалось то мне нужно в результат записать что файла небыло.

спасибо
Автор: 01MDM
Дата сообщения: 02.08.2009 21:48
slech
Наверное лучше сделать так:

Код:
:: Если файл существует, берем из него первую строку. Если нет - пишем ошибку в лог.

if exist url_log.txt (
set /p input_file=<url_log.txt
) else (
echo file not exists 1>>log.txt
)
Автор: slech
Дата сообщения: 02.08.2009 21:53
01MDM
я сейчас тоже об этом подумал - но есть проблема - c cURL сработает - он не создаёт файла если несмог скачать ничего, а вот Wget создаёт даже пустой файл и тут это не пройдёт.
может можно по другому обойти ?
Автор: 01MDM
Дата сообщения: 02.08.2009 22:26
slech
Тогда так:

Код:
if exist url_log.txt (
set /p input_file=<url_log.txt
)
if not defined input_file (
echo url_log.txt not exists or it is empty 1>>log.txt
rem set input_file=ERROR
)
Автор: slech
Дата сообщения: 02.08.2009 23:00
01MDM
спасибо, заработало.
Автор: mouser
Дата сообщения: 03.08.2009 08:30
подскажите как программно передвинуть мышь?
Автор: 01MDM
Дата сообщения: 03.08.2009 11:26
mouser
Утилита nircmd (в шапке).
Автор: YTs Jeam
Дата сообщения: 03.08.2009 12:26
Привет, помогите составить батник, который бы закрывал приложение - Program.exe, если оно запущено.
Автор: Maza_Faka
Дата сообщения: 03.08.2009 12:35
YTs Jeam

Код:

Taskkill /F /IM Program.exe

Автор: bredonosec
Дата сообщения: 03.08.2009 13:56
а как найти все машины поддомена (директории) и включить им одну службу?
Не каждой отдельно по имени, а всем имеющимся
Автор: Joo1z
Дата сообщения: 03.08.2009 15:08
bredonosec
Я юзал прямо из командной строки: for /f %i in ('net view | findsr \\') do @sc %i start messenger .
Автор: SeriouSShat
Дата сообщения: 04.08.2009 14:59
Нужна помощь.
Делаю скрипт, который будет отсылать сообщение при возникновении нового события в программе (HP OV NNM 8). Для отправки использую софтину postie. В настройках NNM, указано использовать traptomail.bat и какую информацию отсылать:
traptomail.bat $sourceObjectName Host:$sourceObjectName Address:$managementAddress State:$name Status:$severity

Сам traptomail.bat выглядит следующим образом:
@echo off
echo ***** HP OV NNM ***** >> D:\HP\test.txt
set node=%1
SHIFT
:Loop
IF "%1"=="" GOTO Continue
echo %1 >> D:\HP\test.txt
SHIFT
GOTO Loop
:Continue
"D:\HP\postie.exe" -host:post.server.ru -port:25 -hide -to:my@mail.com -from:nnm@mail.com -verify -s:"NODE DOWN! Alert for %node%." -file:D:\HP\test.txt -rm

В итоге админ получает следующее письмо:
Тема: NODE DOWN! Alert for cisco2821.domen.ru
***** HP OV NNM *****
Host:cisco2821
State:NodeDown
Status:Critical
Address:10.0.0.1

Как добавить вот этот скрипт

@echo off
Set File=test.txt
Set Num=1
:Loop
If Not Exist %File% Goto EndLoop
For %%a In (%File%) Do (
Set FName=%%~na
Set FExt=%%~xa)
Set NewFName=%FName%_%Num%%FExt%
Set /a Num=%Num% + 1
(If Exist %NewFName% Goto Loop) && (Set NewFName=%NewFName%)
Set File=%NewFName%
:EndLoop
Echo %File%

в мой, чтобы когда создается файл test.txt, он имел уникальное имя?
Автор: testir
Дата сообщения: 04.08.2009 16:17
Доброго времени суток,
подскажи как сделать
есть список каталогов. в этих каталогах нужно искать подкаталоги с определенным именем, находя эти подкаталоги - удалять, среди этого списка есть каталоги, которые нужно просто пропускать не заходя в них.
например.
folder1
folder1.1
folder1.2
folder2
folder2.1
folder2.2
folder2.3

folder3
folder3.1
folder3.2
folder3.3
folder3.1.1
folder3.1.2
folder3.1.3
folder4

нужно пропустить folder1, удалить folder2.2 folder3.3 пропустить folder4 и т.д

РЕшение нужно сделать на cmd
Автор: king_stiven
Дата сообщения: 04.08.2009 16:59
testir

в этих каталогах нужно искать подкаталоги с определенным именем,
эти имена берутся из второго списка?

есть каталоги, которые нужно просто пропускать не заходя в них
эти имена берутся из третьего списка?
Автор: testir
Дата сообщения: 04.08.2009 17:20
king_stiven
Есть общий список к примеру с каталогами в которые не нужно заходить (пропускать их).
Как я предполагал сделать, сравнивать имеющиеся каталоги со списком каталогов исключения(те которые нужно пропускать)
допустим есть одно название каталога - folder10, и есть на диске С дерево каталогов,
нужно пройти по всем каталогам найти в них подкаталоги с названием folder10 и удалить их,
учитывая каталоги исключения (список) в которые заходить не нужно, если не понятно постораюсь еще как-то объснить )
Автор: smirnvlad
Дата сообщения: 04.08.2009 18:07
SeriouSShat

[more]

Код:
@echo off
Set File=test.txt
Set Num=1
:Loop
If Not Exist %File% Goto EndLoop
For %%a In (%File%) Do (
Set FName=%%~na
Set FExt=%%~xa)
Set NewFName=%FName%_%Num%%FExt%
Set /a Num=%Num% + 1
(If Exist %NewFName% Goto Loop) && (Set NewFName=%NewFName%)
Set File=%NewFName%
:EndLoop
Echo %File%

echo ***** HP OV NNM ***** >> D:\HP\%File%
set node=%1
SHIFT
:Loop
IF "%1"=="" GOTO Continue
echo %1 >> D:\HP\%File%
SHIFT
GOTO Loop
:Continue
"D:\HP\postie.exe" -host:post.server.ru -port:25 -hide -to:my@mail.com -from:nnm@mail.com -verify -s:"NODE DOWN! Alert for %node%." -file:D:\HP\%File% -rm
Автор: king_stiven
Дата сообщения: 04.08.2009 18:25
testir
пролистни назад страниц 10-15 было похожее, попробуй.
Автор: Soloveu
Дата сообщения: 04.08.2009 19:09
Народ простейшая задача, мне надо парочке файлов дать права администратора.
У меня получилось вот что:

cacls "%WinDir%\System32\dwm.exe" /e /g Administrators:f

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

Не пойму что не так делаю. Если вместо админа подставить everyone все нормально...но для всех доступ мне не нужен (сказали опасно)

PS: знаю что где-нибудь ответ 100% уже написан, но найти его просто невозможно..
Автор: 01MDM
Дата сообщения: 04.08.2009 22:45
Soloveu
Подозреваю, что у тебя нет группы "Administrators", зато есть "Администраторы"
Автор: Soloveu
Дата сообщения: 04.08.2009 23:19
01MDM, да я и по русски вводил, но там вообще крякозябли получаются...
Автор: king_stiven
Дата сообщения: 05.08.2009 06:02
testir
@echo off
for /f "tokens=*" %%e in ('dir /b /a:d c:\ ^| findstr /v /X /G:"1.txt"') do (
for /f "tokens=*" %%f in ('dir /b /a:d "c:\%%e" ^| findstr /X /C:"folder10"') do rd /S /Q "c:\%%e\%%f"
)
Автор: SeriouSShat
Дата сообщения: 05.08.2009 08:48
smirnvlad я тоже так сделал, но почему то, когда скрипт запускается 3-й раз, 4-й раз и т.д. Файлы после test_1.txt не создаются. Тоесть если я убираю в самом конце скрипта -rm и запускаю 5 раз скрипт подряд, вместо того чтобы получить test.txt, test_1.txt, test_2.txt, test_3.txt, test_4.txt, у меня только созданы test.txt и test_1.txt.
Подскажите, почему так?
Автор: GreaseOD1
Дата сообщения: 05.08.2009 09:41
Добрый день.

Подскажите пожалуйста как из переменной типа %%i вынуть нужную информацию
Вот пример.

@echo on
::List_stores.txt содержет две строки: qwe002, qwe010

for /F %%i in (List_stores.txt) do (

::Хочу подключится к серверу %%i (qwe002) и скопировать файл с названием 02_zzz.txt и отправить его на др сервер.
::Как можно из переменной %%i выцепить только цифры 02 чтобы потом использовать их для копирования файла 02_zzz.txt?
::Пытался обрезать как например с датой (set y=%date:~6,2%) но не получилось
::set y=%%i:~6,1 - не работает

)
Автор: SeriouSShat
Дата сообщения: 05.08.2009 10:55
Подскажите почему после test_1.txt файлы больше не создаются. Тоесть убирав в самом конце скрипта -rm (чтобы файлы не удалялись) и запускаю 5 раз скрипт подряд, вместо того чтобы получить в папке 5 файликов - test.txt, test_1.txt, test_2.txt, test_3.txt, test_4.txt, у меня созданы только - test.txt и test_1.txt.
Вот скрипт:
Подробнее...
Автор: testir
Дата сообщения: 05.08.2009 12:07
king_stiven
Спасибо за решение, можно добавить еще несколько условий,
есть 3 разных каталога
folder1
folder2
folder3
названия каталогов - это даты, каждый раз меняются. механизм вычисления дат есть,просто названия каталогов принимают каждый раз новые даты.

есть список каталогов (1.txt), которые нужно пропускать (сравнивая их с каталогами которые в корне), после чего, осуществлять поиск по всему дереву выбранных каталогов

в folder3 создается файл filename
удаление folder2 зависит от наличия файла filename в folder3, удаление folder1 не зависит ни от чего - просто поиск folder1 по всем каталогам кроме тех что в списке 1.txt и удаление.
Каталоги folder2 и folder3 находятся в одном подкаталоге.
пример

есть список каталогов в корне
root\kat1
root\kat2
root\kat3
root\kat4

есть список 1.txt в котором kat3 kat4

сравнивать поочередно каталоги из корня со списком 1.txt
которые совпадают - пропускаем,
если не совпадают, заходим в этот каталог и делаем поиск по всем его подкаталогам в поисках:
folder1 (если нашли - удалить)
файла filename, который находится в folder3, если файл существует - удалить folder2 со всеми содержимым, если не существует продолжить поиск folder1.





Автор: wolf0425
Дата сообщения: 05.08.2009 14:19
как расшарить папку для с разными правами доступа двух юзеров?
Автор: smirnvlad
Дата сообщения: 05.08.2009 18:44
SeriouSShat


Цитата:
Подскажите почему после test_1.txt файлы больше не создаются. Тоесть убирав в самом конце скрипта -rm (чтобы файлы не удалялись) и запускаю 5 раз скрипт подряд, вместо того чтобы получить в папке 5 файликов - test.txt, test_1.txt, test_2.txt, test_3.txt, test_4.txt, у меня созданы только - test.txt и test_1.txt.


такое возможно в случае одновременного запуска нескольких копий скрипта или если рабочая папка не D:\HP

попробуйте этот
[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
:Loop
IF "%1"=="" GOTO Continue
echo %1 >> "D:\HP\%File%"
SHIFT
GOTO Loop
:Continue
"D:\HP\postie.exe" -host:post.server.ru -port:25 -hide -to:my@mail.com -from:nnm@mail.com -verify -s:"NODE DOWN! Alert for %node%." -file:D:\HP\%File% -rm
Автор: 01MDM
Дата сообщения: 05.08.2009 20:28
GreaseOD1


Код:
@echo off
setlocal enabledelayedexpansion

for /f %%i in (List_stores.txt) do (
set "num=%%i"
set "num=!num:~-2!"
echo !num!
)
Автор: garri671
Дата сообщения: 06.08.2009 10:51
Всем привет!
Подскажите в чем ошибка надо по сетке внести изменения в реестр и второй вопрос при обновлении Виндов на компах в домене включился фаервол, есть ли решения его по сети вырубить (АД-нет). Заранее благодарен.
1.bat
@echo off
chcp 1251
setlocal
pushd %0\..
for /f %%i in (comp.txt) do (
echo Now try controller: %%i
ping -n 1 %%i > nul
if errorlevel 1 (
echo Ping %%i error
echo.
) else call reg_.bat %%i
)

reg_.bat____________________________

Reg Add \\%1\HKLM\SOFTWARE\Policies\Microsoft\FirewallPolicy
Reg Add \\%1\HKLM\SOFTWARE\Policies\Microsoft\FirewallPolicy\StandardProfile
Reg Add \\%1\HKLM\SOFTWARE\Policies\Microsoft\FirewallPolicy\StandardProfile /v EnableFirewall /t REG_DWORD /d 00000000
Reg Add \\%1\HKLM\SOFTWARE\Policies\Microsoft\FirewallPolicy\DomainProfile
Reg Add \\%1\HKLM\SOFTWARE\Policies\Microsoft\FirewallPolicy\DomainProfile /v EnableFirewall /t REG_DWORD /d 00000000

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

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


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