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

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

Автор: 01MDM
Дата сообщения: 18.01.2009 18:01
korosya

Цитата:
но хотелось бы воспользоваться встроенными в Windows возможностями

К сожалению cmd не обладает такими возможностями, если нельзя пользоваться сторонними утилитами то тогда попытайся решить задачу с помощью js или vbs. Но это уже другая тема.
Автор: korosya
Дата сообщения: 18.01.2009 19:50

Цитата:
Но это уже другая тема.

Не подскажешь, где можно посмотреть?
Автор: ATS2000
Дата сообщения: 19.01.2009 04:51
Всем привет!

Задача: проверять хосты из списка, на доступность по сети командой ping. Если хост становится недоступным, то создать файл с текущей датой и писать в него время начала отсутствия пинга и время начала появления пинга. Хорошо бы было, если бы была возможность задавать кол-во посланных пакетов, оставшихся без ответа (или наоборот с ответом), чтобы определить критерий отсутствия (присутствия связи). Пинговать будем с Windows XP.

пример файла list.txt, со списком хостов:


Цитата:

10.2.220.1
10.2.220.2


пример файла 19-01-2009.log, с логом на 19 января 2009 года:


Цитата:

12:21 Пропал пинг с хостом 10.2.220.1
13.10 Появился пинг с хостом 10.2.220.1
14.15 Пропал пинг с хостом 10.2.220.2
14.27 Появился пинг с хостом 10.2.220.2


Автор: demon1981
Дата сообщения: 19.01.2009 07:53
Samec2009

Код: @echo off
chcp 1251
for /f "tokens=2 delims=:" %%i in ('ipconfig ^| find /i "адрес"') do @echo %%i>1.txt
Автор: demon1981
Дата сообщения: 19.01.2009 14:52
Elroir
спасибо! то что надо. теперь все переменные перебирает как должно

другое образовалось получаю из реестра вот таким макаром

Код: @echo off
chcp 1251>nul
for /f "tokens=1-3 delims=    " %%d in ('reg query hkcu\Software\1c\1cv7\7.7\titles^|find /i "reg_sz"') do (
echo param1:%%dparam2:%%f
)
Автор: Elroir
Дата сообщения: 19.01.2009 15:22
demon1981
Попробуй убрать из строки for-а "delims= ".
Автор: Zakkazak
Дата сообщения: 19.01.2009 16:29
Nagual

Код: var WSHShell = WScript.CreateObject("WScript.Shell");
WSHShell.Run ("\"E:\\Program Files\\FlashGet\\flashget.exe\"",0);
Автор: korosya
Дата сообщения: 19.01.2009 19:38
Возник такой вопрос:
При использовании cmd.exe возможновыполнение команд без создания батника как файла. То есть можно в Пуск-Выполнить написать cmd /с "команда1&команда2&..." и будут последовательно выполнены команды 1,2 ....
Хотелось бы узнать возможно ли такое с JS/VBS?
Автор: FaUsT333
Дата сообщения: 19.01.2009 21:07
Доброго времени суток. Имеется следующий вопрос к знатокам:
Вкратце - необходимо собрать несколько бинарных файлов в один, потом этот файл переименовать и переместить в другое место.
Подробно: Файлов в папке несколько, от 16 до 25, каждый день по разному, размер каждого 160 Кб, именуются файлы таким образом - 01190725.mom, где 01 - это месяц январь, 19 - число месяца, 0725 - время формирования на удаленной машине. Файлы отличаются только временем создания за сутки, например 01190125 по 01192250, т.е с часа ночи по 22.50 вечера. Я каждый день в Фаре вручную их собираю, путем выделения всех и далее стоя на первом файле пачки (пачка - суммарное кол-во суточных файлов) копирую в один файл с именем bin0_011909.001 и кидаю его на диск Е:\. Помогите пожалуйста советом, как можно этот процесс автоматизировать? Спасибо.
Автор: korosya
Дата сообщения: 19.01.2009 21:41
FaUsT333

Цитата:
Если требуется объединить несколько двоичных файлов в один с использованием подстановочных знаков, воспользуйтесь параметром /b. В результате CTRL+Z не будет рассматриваться как символ конца файла в Windows XP. Например, введите следующую команду:

copy /b *.exe combin.exe


Эта цитата из справки Windows.
Автор: FsUsT
Дата сообщения: 20.01.2009 07:49
korosya
Просто не могу понять как указать БАТ-файлу на наличие первого файла из пачки и что б он подхватил остальные, стандартная команда file1+file2....file24 помоему не подходит тут Да и указанные вами подстановочные знаки тоже надо уметь ставить, в чем я не особо силен
Автор: Rz8
Дата сообщения: 20.01.2009 08:42
01MDM
Энное количество страниц назад ты рекомендовал мну 4DOS. А не мог бы ты просветить меня как бы мне создать загрузочную дискету с ним, а то я тупо прописал в config.sys SELL=A:\4DOS\4DOS.COM, но он тогда не грузит autoexec.bat. И даже если я вручную гружу autoexec, то после загрузки Volkov Commander оболочкой снова становится command.com.
Автор: demon1981
Дата сообщения: 20.01.2009 12:59
Elroir
у меня там [more]@echo off
chcp 1251>nul
for /f "tokens=1-3 delims= " %%d in ('reg query hkcu\Software\1c\1cv7\7.7\titles^|find /i "reg_sz"') do (
echo param1:%%dparam2:%%f
) [/more] стоит разделитель табуляция(после delims= стоит TAB). Если поставить пробел дополнительным разделителем или еще раз строку через разбор пропустить но с разделителем пробелом, то разбор удалит пробелы в начале, но он и отбросит части директорий если в их именах были пробелы я таким макаром пробовал удалить пробелы в начале, но тогда моим способом получаются пробелы в конце
Не знаю, что и делать есть совет?
Автор: 01MDM
Дата сообщения: 20.01.2009 13:08
Rz8
Попробуй как тут
Сам не могу проверить, так как нет floppy.
Автор: demon1981
Дата сообщения: 20.01.2009 14:25
вроде получилось, но настолько коряво по сути своей!
вот так

Код: @echo off
chcp 1251>nul
del temp.txt>nul
for /f "tokens=1-10 delims= " %%i in (fromreg.txt) do (
echo %%i %%j %%k %%l %%m %%n %%o %%p>>temp.txt
)
move /y temp.txt fromreg.txt
call removespaces.vbs fromreg.txt
Автор: korosya
Дата сообщения: 20.01.2009 19:29
FsUsT
copy /b *.mom combin.mom - сложение всех файлов с расширением mom в один combin.mom

copy /b 0119*.mom combin.mom - сложение всех файлов за 01.19 с расширением mom в один combin.mom
Автор: FuZZion
Дата сообщения: 21.01.2009 10:07
Помогите решить, на первый взгляд тривиальную задачу. Есть файл *.txt. Мне нужно написать батник, который будет убирать вначале 10-й строки ";" и поставить её в начало 11-й строки. И второй, который будет возвращать ";" в 10-ю строку и убирать с 11-й. Спасибо.
Автор: 01MDM
Дата сообщения: 21.01.2009 11:34
FuZZion
C помощью sed.exe:

Код:
::1-ый
sed -i -e "10 s/^;//" -e "11 s/^/;/" 1.txt

::2-ой
sed -i -e "10 s/^/;/" -e "11 s/^;//" 1.txt
Автор: FuZZion
Дата сообщения: 21.01.2009 11:48
01MDM
Спасибо ) Это уже что-то. Но на "i" в комманде ругается. Убрал "i" - ругаться перестал. Зачем она? И после выполнения комманды в коммандной строке выдаёт файл как-буд-то изменённый, а на самом деле (когда открываю файл 1.txt) ничего не изменилось ((. Может как-то надо делать "save"? И что это за sed.exe вообще? Где про него и его комманды можно прочесть?
Автор: Nagual
Дата сообщения: 21.01.2009 11:51
Zakkazak

Цитата:
Только не понятно, почему не запускается в разных режимах пробовал следующие значения 0,2,6.

0 - скрытое окно.
1 - нормальное окно.
2 - минимизированное окно.
3 - максимизированное окно.
4 - запустить приложение с окном в том состоянии, в котором оно было последний раз. Текущее активное окно останется активным.
5 - запустить приложение с окном в текущем состоянии.
7 - минимизированное окно. Текущее активное окно останется активным.
10 - состояние окна по умолчанию для приложения.
Автор: 01MDM
Дата сообщения: 21.01.2009 11:53
FuZZion
Ключ -i служит для перезаписи исходного файла, скорее всего у тебя какой-то не тот sed:


Цитата:

> sed --version
GNU sed версия 4.1.5
Copyright (C) 2003 Free Software Foundation, Inc.
Это свободное программное обеспечение; условия его копирования смотрите в
исходных текстах. Не предоставляется НИКАКОЙ гарантии; даже гарантии
ПРИГОДНОСТИ ДЛЯ ПРОДАЖИ или ПРИМЕНИМОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ, в той мере,
в которой это может быть допущено законодательством.

>

Автор: Nagual
Дата сообщения: 21.01.2009 11:58
не трудно догадаться, что приложение (утилита) должно(а) поддерживать заданный вид окна
Автор: 01MDM
Дата сообщения: 21.01.2009 12:42
FuZZion

Попробуй тогда так:

Код:
::1
sed -n -e "1,9 p" -e "10 s/^;//p" -e "11 s/^/;/p" -e "12,$ p" 1.txt | more 1>1.tmp
move 1.tmp 1.txt

::2
sed -n -e "1,9 p" -e "10 s/^/;/p" -e "11 s/^;//p" -e "12,$ p" 1.txt | more 1>1.tmp
move 1.tmp 1.txt
Автор: FuZZion
Дата сообщения: 21.01.2009 12:47
01MDM


Цитата:
у тебя какой-то не тот sed:


Верно - не тот ( У меня ключ -i не поддерживается. Подскижи где можно *.exe версии 4.1.5 скачать?
Автор: Elroir
Дата сообщения: 21.01.2009 14:16
FuZZion
http://gnuwin32.sourceforge.net/packages/sed.htm
Автор: FuZZion
Дата сообщения: 21.01.2009 14:26
Elroir
спасибо, но там нет exe-файла..
Скачал отсюда http://sed.sourceforge.net/
вот этот вариант super sed v3.59 for Windows
Теперь работает с
Цитата:
sed -i -e "10 s/^;//" -e "11 s/^/;/" 1.txt

но всё равно не изменяет мой файл, а создаёт новый изменённый "sedDOSSUX" в этой-же директории. Ну что за беда (
Автор: Elroir
Дата сообщения: 21.01.2009 14:43
FuZZion
Версии 3.xx не поддерживают изменения исходного файла. По адресу, который я дал - все есть. Внизу страницы скачай либо "Complete package, except sources", либо "Binaries" вместе с "Dependencies". Если после нажатия не начинается закачка файлов - смени зеркало, с которого ты скачиваешь.
Автор: igor_andreev
Дата сообщения: 21.01.2009 15:08
FuZZion
Возьми версию 3.62 http://sed.sourceforge.net/grabbag/ssed/
и указывай расширение для переименования исходного файла:
sed -i.bak -e ...
Elroir
А как вы умудряетесь 4-версиями пользоваться, они же скабрезно и с надругательством обходятся со знаками переноса строки. Или обычным виндовым блокнотом никто не пользуется?
Автор: Elroir
Дата сообщения: 21.01.2009 15:28
igor_andreev
Я ими не пользуюсь - только советую
Автор: FuZZion
Дата сообщения: 21.01.2009 15:35
Elroir
01MDM
Спасибо, помогли!
Кстати, 4-я версия действительно надругалась над знаками переносов строки )) 3.62 рулит. Спасибо.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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