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

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

Автор: SapSat
Дата сообщения: 06.12.2007 08:00
Господа!

Нужна помощь - или хотя-бы идея -

надо батником сгенерить файд на 1000 строк.
Строка типа

textA_textB_textC_1

где 1 - число от 1 до 1000.
(текст одинаковый, разница только в числе).
Засада в том, что эти числа должны идти в случайном порядке.

Как вариант - можно легко сгенерить файл с упорядоченным набором строк.
Но как потом эти строки перетасовать?

?
Автор: king_stiven
Дата сообщения: 06.12.2007 08:13
SapSat
переменная %random% раскроется в случайное число до 5 знаков, отсюда и плясать
Автор: SapSat
Дата сообщения: 06.12.2007 08:59
king_stiven

Не понял???

Мне надо, чтобы были представлены все числа от 1 до 1000, но в случайном порядке, а %random% будут давать случайные цифры - возможны повторы, возможны пропуски...

Или я чего-то не понял?

Или это была идея использовать %random% при сортировке уже имеющегося последовательного набора строк?

Тогда - как реализовать эту перетасовку?

?
Автор: Dark Tiger
Дата сообщения: 06.12.2007 10:29
Доброго всем коннекта уважаемые читатели этого форума!
Встала передо мной такая вот проблема, в одном из офисов имеется местный провайдер интернета, подключение к которому осуществляется через VPN соединение. Непонятно от чего, но проблема точно не в наших компьютерах, это самое VPN соединение само по себе иногда отваливается, при чём абсолютно непонятно при каких обстоятельствах, может и неделю комп круглосуточно работать и всё гуд, а может и через 2-3 часа переодически отваливаться. Ну да ладно, вообщем у меня такая просьба к мастерам по написанию скриптов:
Нужно сделать так что бы осуществлялась проверка VPN соединения (ну или хотя бы пинг например до ya.ru), например переодически раз в 30 минут, и если выявлялось бы что оно выключено, то запускалось бы автоматически, без каких либо вмешательств пользователя.
Заранее спасибо.
Автор: wolf0425
Дата сообщения: 06.12.2007 10:41
SapSat

@echo off
setlocal enabledelayedexpansion

echo creation 2>tmplist1.txt
for /l %%a in (1,1,1000) do echo !random! %%a >>tmplist1.txt

echo sorting 2>tmplist2.txt
for /f "tokens=1,2*" %%a in ('sort tmplist1.txt') do echo textA_textB_textC_%%b>>tmplist2.txt

если сообщения мешаются - впиши свои варианты молчаливого удаления.
Автор: othy
Дата сообщения: 06.12.2007 11:37
Подскажите, как просканировать папку, в которой файлы могут иметь несколько расширений(типа filename.ext1.ext2.ext3), сравнивая два последних расширения, если они одинаковые, то переименовать файл, отбросив последнее расширение.
Автор: SapSat
Дата сообщения: 06.12.2007 12:11
wolf0425

Просто. Гениально. Работает...

10x!!!

Вопрос:

а что это и для чего это:

Код:
2>tmplist1.txt
Автор: king_stiven
Дата сообщения: 06.12.2007 12:46
othy
подсказка

set file3=filename.ext1.ext2.ext3
:begin
for /f "delims=. tokens=1,2*" %%e in ("%file3%") do (
if not "%%f"=="" (
set file1=%%e
set file2=%%f
set file3=%%f.%%g
goto begin
)
)
echo %file1%
echo %file2%
pause
Автор: Andre3000
Дата сообщения: 06.12.2007 12:50
Я создал новую тему, но все же решил и сюда тоже написать:

В настройках языков в панели инструментов во вкладке дополнительно есть опция выбора языка программ не поддерживающих юникод.
Вопрос состоит вот в чем:
у меня есть обучающая программа 99-го года на диске (сделана в программке от макромедии по-моему). Вот, когда запускаю экзешник она вылетает, если в той самой вкладке не стоит язык Английский (США). А если я выбираю английский то остальные русскоязычные программы все с закорючками.
Хотелось бы создать бат файл или файл реестра, при запуске которого в этих настройках автоматически прописывается английский. А при закрытии еще для отката или возврата в русский язык.
У меня есть какие-нибудь шансы?))

P.S. может кодировку самой программы можно поменять на юникод как-то?
Автор: Elroir
Дата сообщения: 06.12.2007 13:09
Andre3000

Цитата:
У меня есть какие-нибудь шансы?))

Есть. Посмотри майкрософтовсксую программку AppLocale
Автор: kotLeon
Дата сообщения: 06.12.2007 13:19
В общем есть такая проблема нужно выключать компы по сети с помощью батника, попробовал вот такие структуры команды shutdown:
shutdown /m \\namecomp /s /f /t 0
shutdown [-s][-f][-m \\namecomp][-t 01]
и к моему разочарованию возникла такая проблема: команда в цикле повторяется но комп не тушит. Хотя первая структура работала на ура в другой сети. Обе сети доменные.
Если кто то знает что это за проблема помогите мне разобраться. Или может есть какаято другая команда, сама суть проблемы стоит не как в выключении компа, а в завершении всех запущенных программ на компе.
Спасибо.
Автор: Dark Tiger
Дата сообщения: 06.12.2007 14:45

Цитата:
Доброго всем коннекта уважаемые читатели этого форума!
Встала передо мной такая вот проблема, в одном из офисов имеется местный провайдер интернета, подключение к которому осуществляется через VPN соединение. Непонятно от чего, но проблема точно не в наших компьютерах, это самое VPN соединение само по себе иногда отваливается, при чём абсолютно непонятно при каких обстоятельствах, может и неделю комп круглосуточно работать и всё гуд, а может и через 2-3 часа переодически отваливаться. Ну да ладно, вообщем у меня такая просьба к мастерам по написанию скриптов:
Нужно сделать так что бы осуществлялась проверка VPN соединения (ну или хотя бы пинг например до ya.ru), например переодически раз в 30 минут, и если выявлялось бы что оно выключено, то запускалось бы автоматически, без каких либо вмешательств пользователя.
Заранее спасибо.


А для моей проблемы батники не подходят что ли?
Автор: Andre3000
Дата сообщения: 06.12.2007 14:50
Elroir, я пробовал. Все равно вылетает.
Автор: king_stiven
Дата сообщения: 06.12.2007 14:53
Dark Tiger

В шапку ходил?
Автор: wolf0425
Дата сообщения: 06.12.2007 15:17
SapSat, echo creation 2>tmplist1.txt
Это вывод слова на экран и перенаправление потока ошибок (2) в файл.
Так как ошибки нет - ничего не выведется и файл будет нулевого размера.
Это делается на случай, если батник уже запускалии остались старые файлы.

RO файлы такая конструкция не обнуляет, но если они почему-то RO - то кто-то ССЗБ.
Автор: SapSat
Дата сообщения: 06.12.2007 15:25
wolf0425

Спасибо.

Теперь появилась новая задача.
Есть лог-файл (сотни тысяч строк)
Строка типа:

Дата,время,число1,число2,число3,число4,число5

Надо определить MIN, MAX, MID - например по всем числам3
(минимальное, максимальное и среднее значение).
Плюс - желательно - для MIN и MAX выдать номер строки где это значение встретилось...

?
Автор: Dark Tiger
Дата сообщения: 06.12.2007 15:31
king_stiven
Да, конечно.
Я нашёл там 2 темы:
1 - Запуск сетевого соединения и 2 - Пример выполнения команд по результату команды ping
Но я если честно в синтаксисе командной строки мало что понимаю, подумал может быть кто нибудь уже был с подобной проблемой и имеет готовый скрипт, если же нет попробую сам как нибудь совместить.
Автор: king_stiven
Дата сообщения: 06.12.2007 15:37
Dark Tiger
Конструктивнее будет привести свой вариант, и показать, где не срабатывает или где не понятно, тогда сразу поправят. Опять же есть справка по командам, что не ясно, обьясним. Сам не в теме.
Автор: Dark Tiger
Дата сообщения: 06.12.2007 15:40
king_stiven
Ок, спасибо.
Вечерком тогда дома попробую у себя аналогично что либо сделать.
Автор: 01MDM
Дата сообщения: 06.12.2007 16:36
wolf0425
Понравился твой код, решил его слегка модифицировать, т.е вместо файла для сортировки использовать массив

Код:
@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,1000) do set zz!random!!random!=%%i
for /f "tokens=2 delims==" %%i in ('set zz ^| sort') do echo %%i
Автор: wolf0425
Дата сообщения: 06.12.2007 17:13
01MDM я по секрету скажу, что и для трех рандомов подряд _могут_ встречаться повторы. В этом смысл рандомного рандома
Хочешь без повторов - считай md5 от соль+счетчик цикла
но реально повторы ведут imho лишь к несущественному такой маленькой выборке ухудшению качества rnd

с set zz.. мне нравится меньше чем с файлом. почему-то. кажется, что при длинных выборках - время будет нарастать сильнее, про прожорливость памяти уж не говорю.

SapSat, надо найти мин/макс и среднее по колонке число3 (например)?
и загрузить файл в эксель - почему-то ломает?

посчитать мин/макс батником - не вижу проблем тебе самому разобрать через for /f "delims=," , а вот со средним - может и обломиться на разрядности maxint.
В любом случае для 100k строк это будет довольно медленно.
Автор: Dark Tiger
Дата сообщения: 06.12.2007 19:16
Помогите разобраться вот пожалуйста, реально завтра надо это уже реализовать.

Вот пример скрипта на выполнение команды по результату ping:


Код: @Echo Off
Set cWork=0
For /l %%a In (2,1,254) Do Call :CompWork 192.168.0.%%a
If %cWork%==0 (ShutDown /?)
GoTo :EOF

:CompWork
Echo Ping %1
Ping -n 1 %1 >Nul
If ErrorLevel 1 (Goto :EOF)
If ErrorLevel 0 (Set cWork=1)
GoTo :EOF
Автор: 01MDM
Дата сообщения: 06.12.2007 20:27
Dark Tiger

Цитата:
требуется если пинг не проходит например до ya.ru этот скрипт выполнял команду rasdial



Код:
ping ya.ru >nul && echo Network is available || rasdial

или просто

ping ya.ru >nul || rasdial
Автор: Ilyansk
Дата сообщения: 07.12.2007 08:50
Dark Tiger

то, что Вы скачали


Цитата:
@Echo Off
Set cWork=0
For /l %%a In (2,1,254) Do Call :CompWork 192.168.0.%%a
If %cWork%==0 (ShutDown /?)
GoTo :EOF

:CompWork
Echo Ping %1
Ping -n 1 %1 >Nul
If ErrorLevel 1 (Goto :EOF)
If ErrorLevel 0 (Set cWork=1)
GoTo :EOF


приведенный код пингует по очереди компьютеры локальный сети начиная с адреса 192.168.0.2 по 192.168.0.254, если хоть от одного есть пинг, то команда ShutDown /? не выполняется (наверное, "гашение" сервера при всех отключенных от сетки компах)
Если должна выполниться команда Shutdown, то это произойдет не скоро. Пинг 252 отключенных компов...

используйте код, представленный 01МDM
Автор: popalka
Дата сообщения: 07.12.2007 09:43
как передать результат выполнения команды в переменную?

Стоит такая задачка:
проверять, отвалилась ли служба или нет и в случае, если отвалилась, стартовать ее.

Хочу сделать разбор результата команды

net start | find "ServiceName"

Можно, конечно в файл-семафор записывать, но как-то не изящно..
Может кто знает?
Автор: SapSat
Дата сообщения: 07.12.2007 09:51
wolf0425

Цитата:

посчитать мин/макс батником - не вижу проблем тебе самому разобрать через for /f "delims=," , а вот со средним - может и обломиться на разрядности maxint.


Да в том то и дело, что что-то не идет. Думал - посмотрю - что люди добрые предложат...
В общем - мой код такой:

Код:
@echo off
setlocal enabledelayedexpansion
set /a i=0
set /a min=0
set /a max=0
set /a mid=0
echo processing 2>results1.txt
for /f "tokens=1,2,3,4,5*" %%a in (test.log) do (
set /a i+=1
if %min%==0 set /a min=%%e
if %max%==0 set /a max=%%e
echo %i% %min% %max% >>results1.txt
if %%e LSS %min% set /a min=%%e & set /a imin=%i%
if %%e GTR %max% set /a max=%%e & set /a imax=%i%
set /a mid=%mid% + %%e
echo %i% MIN=%min% in %imin%. MAX=%max% in %imax%. MID=%mid% >>results1.txt
)
set /a mid=%mid% / %i%
echo MIN = %min% in the line number %imin% >>results1.txt
echo MAX = %max% in the line number %imax% >>results1.txt
echo MID = %mid% in total lines %i% >>results1.txt
Автор: 01MDM
Дата сообщения: 07.12.2007 10:13
popalka
Если сервис запущен, то ничего не произойдет; если остановлен, то запустится

Код:
@echo off
for /f "tokens=3" %%i in ('sc query "ServName" ^| findstr /i "state"') do (
if %%i equ 4 goto:eof
if %%i equ 1 sc start "ServName"
)
Автор: popalka
Дата сообщения: 07.12.2007 10:22
01MDM
О, спасибо, то что нужно!
Автор: Ilyansk
Дата сообщения: 07.12.2007 10:28
popalka

разбор результатов выполнения команд


Код: @echo off
setlocal enabledelayedexpansion
for /f "usebackq tokens=*" %%WORD in (`net start`) do call :razbor %%WORD
echo Finished && goto :eof
:again
:razbor
set "wrd=%1"
if "!wrd!"=="" goto :eof
if /I "!wrd!"=="ServiceName" (
rem что-то делаем когда находим ServiceName
) else (
shift
goto :again
)
Автор: Exilim
Дата сообщения: 07.12.2007 11:58
Подскажите плз как переименовать сетевое подключение при помощи bat файла? Например "Подключение по локальной сети" переименовать в "LAN".

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869

Предыдущая тема: Доступ к реестру через RegEdit?


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