Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd)

Автор: Elroir
Дата сообщения: 25.08.2007 19:49
Rotorina
Строчкой раньше команды поставь "echo %time%"
Автор: Rotorina
Дата сообщения: 25.08.2007 20:15

Код:
echo %time%
netstat -a > 1.txt
Автор: Elroir
Дата сообщения: 25.08.2007 20:18
Rotorina
А так:

Код:
echo %time%>1.txt
netstat -a>>1.txt
Автор: Rotorina
Дата сообщения: 25.08.2007 20:26
Elroir
хм... я думал перенаправление ">" ко всему относится, а не к одной строчке
Автор: Elroir
Дата сообщения: 25.08.2007 20:31
Rotorina
Неправильно думал
Перенаправление работает только для одной строки (если оно не идет после закрывающей скобки - тогда для всех строчек внутри скобок).

Добавлено:

Цитата:
У кого заработало?

У меня, например.

Добавлено:
Не успел я ответить, как ты уже стер то, на что я отвечал.
Автор: Rotorina
Дата сообщения: 25.08.2007 20:42
Вот тут есть фича:

Цитата:
CMD Syntax Parameter: /t:fg : Sets the foreground f and background g colors. The following tables lists valid hexadecimal digits that you can use as the values for f and g.

мне больше всего понравился /t:0A
Пытаюсь реализовать в батнике:

Код: cmd /t:0A
Автор: iglezz
Дата сообщения: 25.08.2007 21:09
Rotorina
в батнике юзать как
Код: color 0A
Автор: Rotorina
Дата сообщения: 26.08.2007 00:11
И опять столнулся с проблемой

Код: @echo off
for %%a in (*.txt) do call :gs "%%a"
goto :eof

:gs
gsar -sC&&numwant==200 -rC&&event==stopped&&numwant==200 "%~1" "%~n1_00%~x1" >nul
goto :eof
Автор: Elroir
Дата сообщения: 26.08.2007 00:21
Rotorina
Тут дело не в именах файлов, а в симвоиле "&". Это спец. символ, который используется для разделения команд в командной строке.
Чтобы использовать его в строке поиска или замены, вместо него надо вставить его ASCII код после двоеточия, в данном случае ":038". То есть строчка с gsar-ом будет выглядеть так:

Код: gsar -sC:038:038numwant==200 -rC:038:038event==stopped:038:038numwant==200 "%~1" "%~n1_00%~x1"
Автор: Rotorina
Дата сообщения: 26.08.2007 00:40
Elroir
Спасибо!!!

В который раз меня выручаешь!

Если я ещё не сильно замучал, подскажи, пожалуйста, как в моём коде организовать перезапись файлика?
Автор: Elroir
Дата сообщения: 26.08.2007 00:48
Rotorina

Цитата:
как в моём коде организовать перезапись файлика?

Не совсем понял вопрос. Какого файлика?
Автор: Rotorina
Дата сообщения: 26.08.2007 01:12
Выше в посте о файликах я писал.
Дело в том, что при замене последовательности символов на другую (код описан пару постов выше), батник начинает сохранять файлы в следующем виде: ....._00.txt
После того как все обрабтает, продолжает обрабатывать ....._00.txt и создаёт ....._00_00.txt и т.д.

И вообще, у меня с именами файлов напряги получились...

refresh_x_y.txt
refresh_x.txt
refreshx_у.txt
refreshx.txt
x=1...10k
y=1...50 - Ну это разве нормально? (

Но можно лишнии удалить и вернуться к начальному виду (до замены и использования батничка):
refresh_x.txt
refreshx.txt х=1...10к

Хотелось бы при использовании батничка не только зименять ту комбинацию символов но и переименовывать файлики следующим образом:

refresh_x.txt > divertedx.txt
refreshx.txt > retractedx.txt <--- (пример)
diverted и retracted вместо y.


Код:
@echo off
for %%a in (*.txt) do call :gs "%%a"
goto :eof

:gs
gsar -s -r[pust] "%~1" "%~n1_00%~x1" >nul
goto :eof
Автор: Elroir
Дата сообщения: 26.08.2007 13:48
Rotorina
Я уже запутался .
Вернемся к началу. У нас есть много файлов с именами refresh[номер].txt и refresh_[номер].txt. То есть начало названия у всех файлов одинаковое (refresh)? Теперь - с помощью gsar-a заменяем строчки внутри файлов и пишем на выходе в файлы diverted[номер].txt, если на входе был файл с символом подчеркивания и retracted[номер].txt, если на входе файл без этого символа. Так?
Автор: Rotorina
Дата сообщения: 27.08.2007 00:06
Elroir
Всё именно так ))
Суть в том, чтобы можно было не только поменять файлик внутри, но и сменить его имя с xxxxx[number].txt на yyyyyy[number].txt.
Если колупаться глубже, то на самом деле есть не только refresh[n], refresh_[n], но и stop[n], start[n], etc, но это уже всё индивидульно.
Так же хотелось бы реализовать обработку файлов не все *.txt, а по заданному ключевому слову в имени.

Добавлено:
Нашёл замечательную утилитку nc.exe.
Неудобством nc.exe является ожидание ответа от хоста, который мне не нужен.
Кто подскажет, какая утилита может заменить nc.exe (NetCat, бывает говорят) для отправки пакетов?
Или как из командной строки ускорить работу данной утилитки?
Возможно ли сочетание команды nc.exe и break? - Как только nc отправляет пакетик из файлика, break тут же прерывает его, пакет как бы отправлен уже, а команда полностью не выполнена, т.к. нет ответа )
Ваши идеи?
Автор: Elroir
Дата сообщения: 27.08.2007 02:00
Rotorina

Код:
@echo off
setlocal enabledelayedexpansion
:: the "wlength" variable determines the number of letters in the prefix
:: for prefix "refresh" it is 7
set "wlength=7"
set /a "index=wlength+1"
:: you can change the files to be processed by editing the file mask in the brackets
for %%a in (refresh*.txt) do call :gs "%%a"
ren *.tx_ *.txt
goto :EOF

:gs
set "fname=%~n1"
if "!fname:~%wlength%,1!"=="_" (
gsar -sSTRING1 -rSTRING2 "%~1" "diverted!fname:~%index%!.tx_" >nul
) else (
gsar -sSTRING1 -rSTRING2 "%~1" "retracted!fname:~%wlength%!.tx_" >nul
)
Автор: Rotorina
Дата сообщения: 27.08.2007 02:09
Elroir
днём попробую, сразу же отпишусь СЕНКС
Автор: Rotorina
Дата сообщения: 27.08.2007 11:49
Elroir
Код усложнён ))

Код:
gsar -sSTRING1 -rSTRING2 "%~1" "diverted!fname:~%index%!.tx_" >nul
) else (
gsar -sSTRING1 -rSTRING2 "%~1" "retracted!fname:~%wlength%!.tx_" >nul
)
Автор: Elroir
Дата сообщения: 27.08.2007 12:13
Rotorina

Цитата:
Правильно ли я правил код

Неправильно . Надо так:

Код:
echo off
setlocal enabledelayedexpansion
set "wlength=7"
set /a "index=wlength+1"
for %%a in (refresh*.txt) do call :gs "%%a"
goto :EOF

:gs
set "fname=%~n1"
if "!fname:~%wlength%,1!"=="_" (
gsar -sSTRING1 -rSTRING2 "%~1" "diverted!fname:~%index%!.txt" >nul
)
goto :eof
Автор: Rotorina
Дата сообщения: 27.08.2007 13:18
Elroir
Знак подчёркивания никакого эффекта не даёт, это всего лишь такое имя файла, входные файлы могут в хвосте также иметь разные символы, поэтому что refresh[n].txt, что refresh_[n].txt или refresh2007-08-27[n].txt имеют один и тотже смысл.
P.S.: сорри, что сразу так не объяснил.
Имена на выходе задаваемые. diverted[n].txt и retracted[n].txt могут быть аж никак не diverted[n] и retracted[n], а к примеру 12345[n].txt

Я хотел бы, чтоб в батнике была возможность прописывать руками имя входного файла aaaaa и задавать его на выходе как bbbbb. Таким образом после gsar-а бывший файлик aaaaa1.txt стал bbbbb1.txt, а файлик aaaaa19840.txt становился bbbbb19840.txt

P.S.: aaaaa и bbbbb могут меняться в зависимости от требований. )
Elroir, вы думаете слишком сложно... я ведь начинающий ещё, все идеи простенькие

Добавлено:
Да что ж я делаю не так
вот код:

Код:
echo off
setlocal enabledelayedexpansion
set "wlength=7"
set /a "index=wlength+1"
for %%a in (refresh*.txt) do call :gs "%%a"
goto :EOF

:gs
set "fname=%~n1"
if "!fname:~%wlength%,1!"=="_" (
gsar -s%%c9D%%1b%%16%% -r1111111111 "%~1" "diverted!fname:~%index%!.txt" >nul
)
goto :eof
Автор: Elroir
Дата сообщения: 27.08.2007 13:29
Rotorina
Вот теперь понятно
Тогда так:

Код:
echo off
setlocal enabledelayedexpansion
set "input=aaaaa"
set "output=bbbbbb"
set "wlength=5"
for %%a in (%input%*.txt) do call :gs "%%a"
goto :EOF

:gs
set "fname=%~n1"
gsar -sSTRING1 -rSTRING2 "%~1" "%output%!fname:~%wlength%!.txt" >nul
goto :eof
Автор: Rotorina
Дата сообщения: 27.08.2007 13:40
Elroir
Большое-больше СПАСИБО и УВАЖЕНИЕ!
Сбылось!!!!
Ещё раз спасибо!
Автор: utka00
Дата сообщения: 28.08.2007 11:12
У меня есть много интернет тарифов, как мне сделать батник чтоб там было чтото типа меню какой тариф подключить, причем у меня все идет через одно подключение (rasdial inet логин пароль)?
Автор: KapralBel
Дата сообщения: 28.08.2007 12:17
utka00
А как тогда тариф выбирается?
Автор: utka00
Дата сообщения: 28.08.2007 13:11
KapralBel
разные логины и пароли
Автор: Elroir
Дата сообщения: 28.08.2007 13:31
utka00

Код:
@echo off
setlocal
echo 1. aaaa
echo 2. bbbb
echo 3. cccc
set /p "choice=Enter your choice: "
if "%choice%"=="1" rasdial inet loginA passwordA
if "%choice%"=="2" rasdial inet loginB passwordB
if "%choice%"=="3" rasdial inet loginC passwordC
Автор: Rotorina
Дата сообщения: 28.08.2007 16:29
а если VPN ?
Не отображается русский?

Запускаю батник REFRESH из батника 1, но он не выполняется по той причине, что пытается обработать файлы, которые находятся в том же каталоге где и 1.bat, а они реально находятся с батничком REFRESH.bat. Да и открывает новое окно cmd.

Код:
if "%choice%"=="1" (
start D:\Install\Start\REFRESH.bat
)
Автор: Elroir
Дата сообщения: 28.08.2007 19:02
Rotorina
А что VPN? Если я не ошибаюсь, VPN тоже подключается через rasdial.
А насчет русского - в начале батника надо прописать "chcp 1251>nul"
Автор: Rotorina
Дата сообщения: 28.08.2007 19:21
завтык, неправильно указал имя соединения

Цитата:
А насчет русского - в начале батника надо прописать "chcp 1251>nul"

не пашет
Автор: Elroir
Дата сообщения: 28.08.2007 19:24
Rotorina
Давай определимся, что значит "не пашет". Что должно быть и что получается?
Автор: Rotorina
Дата сообщения: 28.08.2007 19:30
Elroir

Код:

@echo off
chcp 1251>nul
setlocal
:loop
call elay

echo 1. Start and Refresh
echo 2. Стоп
set /p "choice=Enter your choice: "
.................

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879

Предыдущая тема: Problemi s zagruzkoy XP!


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