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

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

Автор: sD31337
Дата сообщения: 09.04.2007 13:46
ну я знаю что THE BAtom можно , а можноли из командной строки без специальных прог типа THE BAT ? извинте конечно если вопрос тупой =) просто интересно возможно ли такое

--Спасибо всем кто ответил на мои вопросы=)
Автор: KapralBel
Дата сообщения: 09.04.2007 13:49
sD31337
Без специальный программ
Типа
* Бата
* Blat
* smtpsend
* и т.д.
нельзя
Стандартный виндовсовский шелл не позволяет
Дополнительный (но его тоже надо ставить) PowerShell - да
Автор: sD31337
Дата сообщения: 09.04.2007 14:25
Кстати я както читал на этом форуме парнь задовал вопрос про удаленное управление из командной строки я нашел сайт нанем описывается telnet но у меня ничего не получается , я вообще не догнал как это все делать , пробовал на втором компе разрешить соединение к своему ip на определенный порт , но все равно ничего не получилось , может быть мне кто нибудь поможет
сайт => http://www.p-stone.ru/libr/os/windows/data/public23a/telnet.shtml
Автор: Levitant
Дата сообщения: 09.04.2007 14:50
KapralBel спасибо за помощь, но я в данном направлении не силен.. В шапке есть способ замены одной строки на другую, который я как-то где-то нашел, но через него копируется только извесная строка. Может есть способ замены конкретного номера строки?
Автор: igor_andreev
Дата сообщения: 09.04.2007 14:56
Levitant
Отмотай топик на пять страниц назад и почитай про sed
Автор: KapralBel
Дата сообщения: 09.04.2007 15:09
Levitant

Код: @Echo Off
Set NewIP=%1
Echo. >Opera.new
For /F "tokens=1-2 Delims==" %%a In (Opera.ini) Do Call :Repl "%%a" "%%b"
Del Opera.ini /q
Ren Opera.New Opera.ini
GoTo :EOF

:Repl
Set Key=%1
Set Value=%2
Set Key=%Key:~1%
Set Key=%Key:~0,-1%
Set Value=%Value:~1%
Set Value=%Value:~0,-1%
If /i "%Key%"=="HTTPS server" (Echo %Key%=%NewIP%>>Opera.New) & (GoTo :EOF)
If /i "%Key%"=="FTP server" (Echo %Key%=%NewIP%>>Opera.New) & (GoTo :EOF)
If /i "%Key%"=="Gopher server" (Echo %Key%=%NewIP%>>Opera.New) & (GoTo :EOF)
If /i "%Key%"=="HTTP server" (Echo %Key%=%NewIP%>>Opera.New) & (GoTo :EOF)
Echo %Key%=%Value%>>Opera.New
GoTo :EOF


Автор: Levitant
Дата сообщения: 09.04.2007 15:49
Всем спасибо большое. Метод igor_andreev`а работает(только я не понял как в одном файле поменять несколько строк, если просто писать строки, то заменяется только последний фаил), но мне намного предпочтиельнее второй вариант, но он не работает, выдаёт новый фаил пустой, лишь с одним знаком пробел.

Нашел извращенный варинат
type opera6.ini | sed "s/HTTP server=.*/HTTP server=192.168.5.2:2456/g" > opera6_new.ini
type opera6_new.ini | sed "s/HTTPS server=.*/HTTPS server=192.168.5.2:2456/g" > opera6.ini

Но все-таки хочется довести до ума хороший метод KapralBel`а.
Автор: KapralBel
Дата сообщения: 09.04.2007 15:58
Levitant
1. Забыл указать вызов Opera.cmd 192.168.0.1:2233 - IP передается как параметр
2. проблелы на концах строк поубирай
3. Запускается в той же папке, где находится opera.ini

Должен работать
Автор: igor_andreev
Дата сообщения: 09.04.2007 16:07
Levitant

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

На будущее, не только с sed - знак "|" можно использовать сколько угодно, пока длина строки позволяет. Твоя замена в одну строчку:

Код:
type opera6.ini | sed "s/HTTPS server=.*/HTTPS server=192.168.5.2:2456/g" | sed "s/HTTP server=.*/HTTP server=192.168.5.2:2456/g" | sed "s/FTP server=.*/FTP server=192.168.5.2:2456/g" | sed "s/Gopher server=.*/Gopher server=192.168.5.2:2456/g">opera6_new.ini
Автор: euheny
Дата сообщения: 10.04.2007 04:00

Цитата:
Ты о чём? Обьясни подробнее...


Интересно , а как участники этой темы запускают cmd ?
Неужели через "выполнить"
Автор: NIKZZZZ
Дата сообщения: 10.04.2007 04:33
Smitis

Цитата:
Мне кажется, как раз с VBS гибрид не получится.

Получиться должен. У меня нет подробного описания VBS, практически во всех мануалах тонкости как раз и пропущены. Например, как на VBS написать "конец скрипта", чтобы последующие строки игнорировались?

Автор: NIKZZZZ
Дата сообщения: 10.04.2007 06:51
Levitant

Цитата:
Можно как нитбудь при помощи батника или как-нибудь сторонне в файле Opera.ini заменить строки:
[SectionName]
HTTPS server=192.168.2.12:2456
FTP server=192.168.2.12:2456
Gopher server=192.168.2.12:2456
HTTP server=192.168.2.12:2456


Наиболее просто решить эту задачу, используя вещи, заточенные под работу с ini файлами.


Код: ;rem IpSet.cmd
;echo off
;autoit3 "%~f0" "c:\...\opera.ini" "SectionName" "HTTPS server" "%1"
;autoit3 "%~f0" "c:\...\opera.ini" "SectionName" "FTP server" "%2"
;autoit3 "%~f0" "c:\...\opera.ini" "SectionName" "Gopher server" "%3"
;autoit3 "%~f0" "c:\...\opera.ini" "SectionName" "HTTP server" "%4"
IniWrite($CmdLine[1],$CmdLine[2],$CmdLine[3],$CmdLine[4])
Автор: Smitis
Дата сообщения: 10.04.2007 09:16
NIKZZZZ

Цитата:
Получиться должен. У меня нет подробного описания VBS, практически во всех мануалах тонкости как раз и пропущены. Например, как на VBS написать "конец скрипта", чтобы последующие строки игнорировались?

Нет у него такого - "конец скрипта". Это же не Перл
И точек пересечению у CMD и VBS нет. У JS, например, удалось приспособить директиву @set. А у VBS такого нет.
Автор: igor_andreev
Дата сообщения: 10.04.2007 11:07
Smitis
test.cmd

Код:
Set s=CreateObject("WScript.Shell") : s.Popup "It's vbscript",1,"oops", 64 '& cls & wscript //e:vbscript %0 & echo It's cmd & pause
Автор: NIKZZZZ
Дата сообщения: 10.04.2007 11:17
Smitis

Цитата:
И точек пересечению у CMD и VBS нет.

Если таких точек нет, значит их надо создать! Можно , например написать пустую VBS процедуру, вызов которой VBS проигнорирует, а батник выполнит. Можно воспользоваться продолжением строки-

on error _
goto 0
-----
-----
:0

Не верю я, что это невозможно!!!






Добавлено:
igor_andreev
Красивый пример, но bat - часть должна быть в одной строке. Реально практически не применимо.

Автор: igor_andreev
Дата сообщения: 10.04.2007 11:39

Цитата:
Можно , например написать пустую VBS процедуру, вызов которой VBS проигнорирует, а батник выполнит.

VBS не игнорирует ничего, он сразу при загрузке проверяет весь скрипт на синтаксис. Шаг вправо, шаг влево, прыжок на месте расцениваются как Error

Цитата:
bat - часть должна быть в одной строке.

Кто такое ТУ установил?
cls вставил, чтоб вывод батника убрать, не вижу, куда тут @echo off воткнуть. Но ошибок нет, ни для vbs, ни для cmd.

Цитата:
Реально практически не применимо.

Да собссно от всех гибридов толку, как от козла молока

Автор: Elroir
Дата сообщения: 10.04.2007 12:13
igor_andreev

Цитата:
Да собссно от всех гибридов толку, как от козла молока

Ну... в большинстве случаев может и так . Но вот какие-нибудь сообщения выводить в MessageBox-ах может пригодиться.
Автор: Levitant
Дата сообщения: 10.04.2007 12:14
Всем большое спасибо за помощь, сделал я экзешник из батника, при помощи sed.
Метод NIKZZZZ слишком тяжелый фаил получается, просто это фигня должна работать у всех в сети, причем должен быть 1 экзе фаил, который с любова местоположения изменял порты в опере. Задача решена, всем огромное спасибо, я бы сам не справился.
Автор: JohnRD
Дата сообщения: 10.04.2007 13:27
день добрый

нет ли возможности считать серийный номер процессора средствами cmd, vbs

everest пишет что его нет.
Автор: KapralBel
Дата сообщения: 10.04.2007 13:45
JohnRD
Ну если Эверест не видит, то помочь смогут только (под вопросом) только специализированные программы от производителей процессоров
Автор: Smitis
Дата сообщения: 10.04.2007 16:28
igor_andreev
NIKZZZZ

Цитата:
Красивый пример, но bat - часть должна быть в одной строке. Реально практически не применимо.

Как раз - некрасивый пример.
- Эхо не отключается.
- Экран принудительно очищается.
- "BAT-часть должна быть в одной строке"


Цитата:
Да собссно от всех гибридов толку, как от козла молока

Некоторые вещи удобнее делать командным файлом, некоторые скриптом.
У меня много гибридов CMD+KIX. Собственно, одна из причин, по которой я в своё время стал использовать kixtart - лёгкий способ получения таких гибридов.
Автор: igor_andreev
Дата сообщения: 10.04.2007 16:41
Smitis

Цитата:
Как раз - некрасивый пример.

Согласен, некрасивый. Но другого до сих пор никто еще не предложил. А общего у vbs и cmd только REM. И там и там можно использовать, как комментарий. Ну еще и там и там строка может начинаться с IF. Шут знает, как все в одну кучу собрать...
Автор: Smitis
Дата сообщения: 10.04.2007 16:46
igor_andreev
Ещё SET.
Но красивого способа я так и не придумал.
Вот с JS - красиво получилось.
Вот это действительно "задачи на bat-файлах", для чего эта тема в своё время и создавалась
Автор: Elroir
Дата сообщения: 10.04.2007 17:45
igor_andreev
Smitis
Вот тут нашел пример vbs.bat:

Код:
:On Error Resume Next
Sub bat
echo Batching_codez_here_following_vbs_rules & pause
start wscript -e:vbs "%~f0"
Exit Sub
End Sub
MsgBox "This is vbs"
Автор: sansun
Дата сообщения: 10.04.2007 18:44
подскажите, как через bat скачать.скинуть файлы на ftp (пароль задан в 16-м формате)
Автор: igor_andreev
Дата сообщения: 10.04.2007 19:58
Elroir

Цитата:
Вот тут нашел пример vbs.bat:

Да нее, не то, щас Smitis придет - раскритикует. Ошибки выдает, типа 'Sub' is not recognized as an internal or external command...
sansun

Цитата:
подскажите, как через bat скачать.скинуть файлы на ftp

Да просто, берешь и скидываешь Правильно заданный вопрос - уже половина ответа. Какие символы в пароле, пример приведи. И чем скачивать-закачивать собрался, прог то много.


Автор: Elroir
Дата сообщения: 10.04.2007 21:01
igor_andreev

Цитата:
Да нее, не то, щас Smitis придет - раскритикует

Ну... тогда поставим и перед Sub двоеточие.
Так никакого сообщения об ошибке нет.
Автор: 01MDM
Дата сообщения: 10.04.2007 22:42
Как вызвать выполнение командного файла через cmd если в %comspec% прописан 4nt?
Пытался (проверить) cmd /k my.cmd, но все равно вызывается для выполнения 4nt.
Может это не очень важно, но для совместимости играет роль.
Просто для Samurize'а написал небольшой bat-script о времени жизни оси. В 4-ке все работает, но если:

Код:
if "%comspec%"="path\to\cmd.exe" goto cmd
if "%comspec%"="path\to\4nt.exe" goto 4
Автор: igor_andreev
Дата сообщения: 10.04.2007 22:55
01MDM
У меня нет 4nt, но может попробовать через %cmdcmdline%?
Автор: Smitis
Дата сообщения: 10.04.2007 23:11

Цитата:
Да нее, не то, щас Smitis придет - раскритикует

Пришёл... Критикую...
Но способ использования двоеточия мне понравился.
Осталось эхо подавить...

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

Цитата:
Как вызвать выполнение командного файла через cmd если в %comspec% прописан 4nt?

А если так:
"cmd.exe" /c my.cmd


Добавлено:

Цитата:
В 4nt формат вывода даты отличается от cmd?

Формат переменной %date% тот же

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Сбой активации XP sp2


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