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

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

Автор: Elroir
Дата сообщения: 15.02.2009 16:07
ponand

Цитата:
set "var2=!test:~0,2!"

Откуда взялась переменная test?
Автор: ponand
Дата сообщения: 15.02.2009 16:23
В место var использовал test и забыл исправить
но все на некоторые файлы получаю ~0,2
Как for обработает файлы в имени которого нет символа "_"?
Автор: Elroir
Дата сообщения: 15.02.2009 16:34
ponand
В %%a будет все имя файла, а в %%b ничего. Соответственно, в var ничего не будет и переменной var2 будет присвоено значение "~0,2".
Если тебе нужны только файлы с "_", тогда можно чуть изменить команду dir:
dir %puti%\*_*.* /a:-d-h /o:n /s /b
Автор: Maza_Faka
Дата сообщения: 16.02.2009 06:26
Alex1985

Цитата:
выяснился 1 недостаток. окно "my program has crashed" "принадлежит" окну "my program" (то есть, второго окна в панели задач нет).

Дочернее окно... Тогда попробуй так:

Код:
@Echo Off

:WindowCheck
CMDOW "my program was crashed" 2>Nul | Find /i "Handle">Nul 2>&1 && Call :MyProc
Ping -n 3600 127.0.0.1>Nul
GoTo :WindowCheck

:MyProc
Echo MyProc
Автор: Ilyansk
Дата сообщения: 16.02.2009 08:17
Elroir
однако при "tokens=*" может иметь место неявное присвоение, если переменные перечислены по алфавиту... может это только для вызовов call справедливо?

Код: for /F "tokens=*" %%a in ('dir') call %%a %%b %%c
Автор: whoyou
Дата сообщения: 16.02.2009 10:14
king_stiven

Большое Вам спасибо, первый вариант подошел.
Автор: chel78
Дата сообщения: 16.02.2009 11:01

Цитата:
chel78

Цитата:
не получается (( все равно пишет что - процесс не может получить доступ к файлу, так как файл занят другой программой

Проверь каким приложением занят этот файл.



Да ничем он не занят, да и не понятно, какой именно файл, и чем занят.

Heeeeeelp!!!
Автор: Elroir
Дата сообщения: 16.02.2009 13:35
Ilyansk

Цитата:
однако при "tokens=*" может иметь место неявное присвоение, если переменные перечислены по алфавиту...

Если честно - я не совсем понял вопрос. Что такое "неявное присвоение"?

Команда for определяет, количество токенов по параметру tokens, согласно четким правилам:
tokens=* - будет определен один токен, в который войдет вся строка.
tokens=1 - будет определен один токен (первый), выделенный в зависимости от определения параметра delims (по умолчанию разделителями являются пробел и символ табуляции).
tokens=1,3 - будут определены два токена, первый и третий, снова - в зависимости от delims.
tokens=2-4 - будут определены три токена, второй, третий и четвертый.
tokens=2* - будут определены два токена, второй и вся оставшаяся часть строки.
Каждый раз, первый определенный токен будет в переменной, которая определена в строке for-а, следующий токен в следующей (по алфавиту) переменной и т. д.
Если в строке нет того количества токенов, которого мы ожидаем - переменные будут пустыми (неопределенными).


Цитата:
здесь %%b получит второй токен, а %%c - третий, буде таковые непустыми окажуццо

Как следует из изложенного выше, %%b и %%c в твоем примере будут пустыми. Команда call здесь никакой роли не играет.
Автор: chel78
Дата сообщения: 16.02.2009 13:50

Цитата:
Как вариант: создать текстовый файл с IP-адресами в нужной последовательности и пинговать их в цикле:

Код:

@Echo Off
For /F %%A In (wlan.txt) Do Ping %%A>>ping_log.txt


можно подробнее на примере, более детально... потому как ламер я .
Автор: Elroir
Дата сообщения: 16.02.2009 14:20
chel78
Тебе же уже все расписали .
В файле wlan.txt находится список точек доступа - каждое название (или IP адрес) на отдельной строке.
Лог пинга записывается в файл ping_log.txt. Команда for проходит по всем строчкам файла wlan.txt, подставляет в команду "Ping %%A" очередную точку доступа и записывает (добавляет) вывод команды ping в файл ping_log.txt.
Автор: chel78
Дата сообщения: 16.02.2009 14:39

Цитата:
chel78
Тебе же уже все расписали .
В файле wlan.txt находится список точек доступа - каждое название (или IP адрес) на отдельной строке.
Лог пинга записывается в файл ping_log.txt. Команда for проходит по всем строчкам файла wlan.txt, подставляет в команду "Ping %%A" очередную точку доступа и записывает (добавляет) вывод команды ping в файл ping_log.txt.


в лог файле появляется только

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


а в самом батнике, пишет что

Цитата:
Процесс не может получить доступ к файлу, так как этот файл занят другим процесс
ом.

все файлы закрыты, ничего не используется.черт его знает...
Автор: Elroir
Дата сообщения: 16.02.2009 15:16
chel78
ОК. По порядку:
1. Как называется батник, который ты запускаешь?
2. Из какой директории запускается батник?
3. Как ты его запускаешь? (двойным кликом, из строки Run (Выполнить), из консольного окна)
4. Приведи полностью код, который ты запускаешь.
5. Приведи несколько строк из файла wlan.txt.

Автор: el mentiroso
Дата сообщения: 16.02.2009 15:25
Может подскажет кто, как обработать следующующую конструкцию:
echo echo. >> test.bat >> run_me.bat
т.е. чтобы выделенная строка целиком передалась в конечный файл
Автор: chel78
Дата сообщения: 16.02.2009 16:06
Аааааааааааааа.....
Протупиииииииииииииилллл... просто я батник назвал не правильно, вместо wlan.bat назвал ping.bat говорю же ламер
Все работает, спасибище
Автор: diodio
Дата сообщения: 16.02.2009 16:13
А на мой вопрос не ответите? (


Цитата:
Добрый день.
Подскажите, пжалста, возможно ли одной строкой запустить telnet, залогинится на устройстве и выполнить на нем же определенную команду?

что то вроде telnet 2.2.2.2 login pass system restart?

Пожалуйста, помогите написать задачу вида - пропадает пинг с устройства в сети зайти телнетом и рестартануть его.



Автор: Kilyan
Дата сообщения: 16.02.2009 16:22
Есть ли возможность завершить сеанс текущего пользователя и войти под именем другого?
Учитывая что все происходит в АктивДиректори(юзер\домен\пароль)
Автор: Maza_Faka
Дата сообщения: 16.02.2009 16:37
el mentiroso

Цитата:
чтобы выделенная строка целиком передалась в конечный файл

Экранируй спец. символы:

Код:
echo ^echo. ^>^> test.bat >> run_me.bat
Автор: Sceval
Дата сообщения: 16.02.2009 17:38
подскажите может кто создавал такой батник
надо делать поиск по диску и по всем папкам и удалять файлы которые были созданы с 5-7 дней назад
Автор: king_stiven
Дата сообщения: 16.02.2009 19:59
Sceval

Этим батник создаёт vbs скрипт

@echo off
echo WScript.Quit (DateDiff("d", CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments.Item(0)).DateCreated, Now))>timediff.vbs

Этим скриптом проверяй файлы, в данном примере создания 14 дней назад

cscript timediff.vbs %1
if %errorlevel% gtr 14 echo %1 created more than 14 days ago
Автор: vld007
Дата сообщения: 16.02.2009 20:14
Здравствуйте
есть такая задача
- собрал термометр к компу выдает в батнике температуру 2 знака загрубляю тк шаг 0.5
опрашиваю его 1 раз в 5 мин циклом
незнаю как сравнивать 2 значные цифры и при превышении запустить что либо run_.cmd например, значения температуры от 17 до 30
что-то типа
20
error-13

if > 25 go to :run
if error-13 go to :run2

Знатоки откликнитесь!
Автор: king_stiven
Дата сообщения: 16.02.2009 20:26
vld007

где оператор_сравнения принимает следующие значения:

EQL - равно
NEQ - не равно
LSS - меньше
LEQ - меньше или равно
GTR - больше
GEQ - больше или равно


IF 10 GTR 1 echo OK
Автор: Alex1985
Дата сообщения: 16.02.2009 21:38
Maza_Faka
теперь всё отлично. спасибо!
Автор: graydevil
Дата сообщения: 17.02.2009 06:43
king_stiven

По поводу -

А как изменить этот код ( удаление сторки c "g:\test" ) чтобы обработались все файлы в каталоге ?

@echo off
chcp 1251

for /f %%1 in ('dir /b *.log') do call :int_work %%1
goto end

:int_work
type %1 | find "g:\test" || goto :eof
type %1 | find /v "g:\test"> new_file.efd
del %1
rename new_file.efd %1
goto :eof

:end

Все работает, батник без параметров все LOG файлы в текущем каталоге обрабатывает, ступил )))



Автор: NvvLazyTiger
Дата сообщения: 17.02.2009 07:47
graydevil
Цитата:
как изменить этот код ( удаление сторки c "g:\test" ) чтобы обработались все файлы в каталоге ?
Например сделать так:
Код: @echo off
set ConText=g:\test
for %%a in (*.log) do call :int_work %%a
goto :eof

:int_work
find /i "%ConText%" < "%*" || goto :eof
find /i /v "%ConText%" < "%*" > new_file.efd
del "%*"
rename new_file.efd "%*"
Автор: Mozgius
Дата сообщения: 17.02.2009 10:30
Люди нужно модифицировать скрипт следующего вида:

net use p: /delete
net use r: /delete
net use p: \\philka\public пароль /user:philka\пользователь
net use r: \\philka\public\private пароль /user:philka\пользователь

нужно чтобы скрипт подставлял имя пользователя и пароль из текстового файла (login-user.txt) вида:

user1 pass1
user2 pass2
\\user3 pass3
user4 pass4

где:

user1 - имя пользователя
pass1 - пароль
\\ - признак означающий что данные именно из этой строки нужно подставить в net use, логин и пароль в нужные места






Добавлено:
Люди нужно модифицировать скрипт следующего вида:

net use p: /delete
net use r: /delete
net use p: \\philka\public пароль /user:philka\пользователь
net use r: \\philka\public\private пароль /user:philka\пользователь


нужно чтобы скрипт подставлял имя пользователя и пароль из текстового файла (login-user.txt) вида:

user1 pass1
user2 pass2
\\user3 pass3
user4 pass4

где:

user1 - имя пользователя
pass1 - пароль
\\ - признак означающий что данные именно из этой строки нужно подставить в net use, логин и пароль в нужные места

Добавлено:
Люди нужно модифицировать скрипт следующего вида:

net use p: /delete
net use r: /delete
net use p: \\philka\public пароль /user:philka\пользователь
net use r: \\philka\public\private пароль /user:philka\пользователь

нужно чтобы скрипт подставлял имя пользователя и пароль из текстового файла (login-user.txt) вида:

user1 pass1
user2 pass2
\\user3 pass3
user4 pass4

где:

user1 - имя пользователя
pass1 - пароль
\\ - признак означающий что данные именно из этой строки нужно подставить в net use, логин и пароль в нужные места

Добавлено:
Люди нужно модифицировать скрипт следующего вида:

[more]
net use p: /delete
net use r: /delete
net use p: \\philka\public пароль /user:philka\пользователь
net use r: \\philka\public\private пароль /user:philka\пользователь
[/more]

нужно чтобы скрипт подставлял имя пользователя и пароль из текстового файла (login-user.txt) вида:

[more]
user1 pass1
user2 pass2
\\user3 pass3
user4 pass4
[/more]

где:

[more]
user1 - имя пользователя
pass1 - пароль
\\ - признак означающий что данные именно из этой строки нужно подставить в net use, логин и пароль в нужные места
[/more]


Добавлено:
http://forum.ru-board.com/forall/ajax/insert_tags/blank.gif

Автор: Maza_Faka
Дата сообщения: 17.02.2009 13:18
Mozgius
Как-то так:

Код:
@Echo off

For /F "Tokens=1,2 Delims= " %%A In (login-user.txt) Do Echo %%A | Find "\\">Nul && Call :MyProc %%A %%B
GoTo :EOF

:MyProc
Set UserName=%1
Set UserName=%UserName:~2%
Set Pass=%2

net use p: /delete
net use r: /delete
net use p: \\philka\public %Pass% /user:philka\%UserName%
net use r: \\philka\public\private %Pass% /user:philka\%UserName%

GoTo :EOF
Автор: diodio
Дата сообщения: 18.02.2009 00:48
Сорри, мой вопрос снимается, проще оказалось на дельфях написать )
Автор: ikif
Дата сообщения: 18.02.2009 03:12
Здравствуйте.
Помогите с написанием Батча, даже не знаю как начать его.
Задача такова:
Нужно , находясь подключеным к интернету, записать ай-пи в файл и сделать релог, после этого надо новый ай-пи сверить с записаным и если они одинаковы , то релог опять.

При следующем запуске бата, ДОБАВЛЯЕМ ай-пи , которий у нас в данный момент к файлу с записаными предыдущими ай-пи. После релога , надо проверить новый ай-пи со всеми ай-пи из файла-списка.

Как отключиться и подключиться к интернета я знаю.

Заранее благодарен.
Автор: Maza_Faka
Дата сообщения: 18.02.2009 06:04
ikif

Цитата:
записать ай-пи в файл

Какой IP?


Цитата:
сделать релог

Что такое релог?
Автор: morningsun
Дата сообщения: 18.02.2009 16:56
Доброго времени суток всем !
Моя задачка разделяется на 2 вопроса

1) Есть текстовый файлик - его содержание:


Код: ivanov
Ivanov
Ivanovich
ii@company.com

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: как сохранить сетевые настройки


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