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

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

Автор: Smitis
Дата сообщения: 07.02.2009 23:15
An0xiety

Цитата:
1) не подскажите, как игнорировать регистр в SED.EXE ? В Findstr это ключ /i, например. Я в мануале так и не нашел
2) можно ли читать из файла input.txt и после выполнения операций в этот же файл input.txt и записать?


Цитата:
Тут неплохой мануал к ней на английском

Хреновый какой-то мануал

1)

Цитата:
/regexp/I
\%regexp%I
The I modifier to regular-expression matching is a GNU extension which causes the regexp to be matched in a case-insensitive manner.

2) В ком строке -i

Цитата:
-i[SUFFIX]
--in-place[=SUFFIX]
This option specifies that files are to be edited in-place. GNU sed does this by creating a temporary file and sending output to this file rather than to the standard output.(1).

т.е

Код: sed -n "/LogFile/p" -i input.txt
Автор: An0xiety
Дата сообщения: 08.02.2009 22:45
Smitis

1) большая просьба, можете привести пример, как под вин. нужно указать параметр игнора регистра?

2)
Не работает ни

Код: sed s/123/456/g -i New_file.txt
Автор: Kilyan
Дата сообщения: 09.02.2009 10:37

Цитата:
Elroir
Хорошо.теперь подробнее:
укажем кол-во допустимых инкрементов=2
Указываем файл=файл1, проверяем его на галичие если находим переименовываем (с файл1 в файл1_1), при следующем запуске опять проверка, но если находим файл1 и файл1_1 то файл один1_1 должен стать файл1_2, файл1 должен стать файл1_1 ну а файл файлом1.
Тким образом - переименование файлов будет идти до указанной точки и старые файлы могут затираться новыми.
И всегда файлов будет в этом случае 3 (текущий фай1,файл1_1, файл1_2)
в этом же примере идет просто инкрементное добавление следующего значения.
ну гдето так!

В программе nnBackup - резервное копирование - есть ключ -n(x) - кол-во ротаций.
Вот мне и нужно применить такую ротацию в переименовании файла до указанной.
Кто нибудь сможет помочь с решением?
Автор: svradmin
Дата сообщения: 09.02.2009 10:47
Поможите с батником нужно из файла прочитать строки и присвоить переменную внутри строки определённым символам ну например есть файл 1.txt с содержанием примерно:
bin(u7avi1425rj.bin)grp(avi:1425)len(6499380)tm(0901300846)pri(2)
bin(u7avi1425u1323rk.bin)grp(avi:1425)len(451923)dep(avi:1323)tm(0901300846)pri(2)
bin(u7avi1425u1409rk.bin)grp(avi:1425)len(82422)dep(avi:1409)tm(0901300846)pri(2)
bin(u7iavi19290.bin)grp(iavi:1929)len(32879742)tm(0902011910)pri(2)
bin(x8xplsb2_45uc.bin)grp(xplsb2:45)len(2047)tm(0901271742)pri(2)
bin(x8xplsb_41cf.bin)grp(xplsb:41)len(482066)tm(0901241412)pri(2)
bin(x8xplsb_41d37cf.bin)grp(xplsb:41)len(50657)dif(xplsb:37)tm(0901241412)pri(2)
bin(x8xplsb_41d38cf.bin)grp(xplsb:41)len(30447)dif(xplsb:38)tm(0901241412)pri(2)


переменную присваивать нужно u7avi1425rj.bin и тд *.bin чтоб потом её использовать дальше в коде батника
Автор: Elroir
Дата сообщения: 09.02.2009 15:57
svradmin

Код:
for /f "tokens=2 delims=()" %%a in (1.txt) do call :process "%%a"
goto :eof
:process
echo Argument = %1
set "var=%~1"
echo "var" = %var%
Автор: Kilyan
Дата сообщения: 09.02.2009 16:19
Elroir
Может быть все же найдется? ато логи хочется в 2-3 файлах иметь, и по одинаково структуре со смещением.
Вот этот код [more]FOR /F "SKIP=2 DELIMS=" %%A IN ('DIR /O:-D /A:-D /B "log*.txt" 2^>NUL') DO DEL "%%A">NUL 2>&1[/more] не совсем подходит - удаляется старее по дате создания по указанному кол-ву возможных SKIP=2.
Автор: svradmin
Дата сообщения: 10.02.2009 04:13
Большое человеческое спасибо, работает
Автор: Elroir
Дата сообщения: 10.02.2009 15:14
Kilyan

Код:
@echo off
setlocal
set "maxFiles=5"
set "file=backup.txt"
for %%a in (%file%) do set "name=%%~na" && set "ext=%%~xa"
if exist "%name%_%maxFiles%%ext%" del /q "%name%_%maxFiles%%ext%"
for /l %%i in (%maxFiles%,-1,1) do call :checkAndRename %%i
if exist "%file%" ren "%file%" "%name%_1%ext%"
:: Здесь твой код создания бекапа
:: . . .


goto :EOF
:checkAndRename
set /a "next=%1+1"
if exist "%name%_%1%ext%" ren "%name%_%1%ext%" "%name%_%next%%ext%"
Автор: Kilyan
Дата сообщения: 10.02.2009 15:24
Elroir
Это просто суппер! Биииг Сенкс.... Как я не изворачивался с полуготовыми примерами - ну не получалось у меня... Огромное спасибо!
Если есть возможность - закинь в Задачи на bat-файлах 5. Наверняка пригодится еще кому!..
Автор: Rush
Дата сообщения: 11.02.2009 11:01
Столкнулся с такой проблемой - не хочет у меня findstr понимать кириллицу.
Наверное, просто тямы у меня не хватает...
Команда такая:

Код: cmd /c findstr /i "текст" 1.txt > 2.txt
Автор: KapralBel
Дата сообщения: 11.02.2009 11:22
Rush
А если его выполнить из cmd.exe

Ктстати -
Цитата:
cmd /c findstr /i "текст" 1.txt > 2.txt

Это фрагмент батника или то что вводится через пуск\выполнить
Автор: Rush
Дата сообщения: 11.02.2009 11:42
KapralBel
из командной строки

Добавлено:
cmd.exe тоже пробовал
Автор: KapralBel
Дата сообщения: 11.02.2009 11:49
И?
что дает?

если не трудно мне на МойНик@GMail.Com - и файл и что ищется
Автор: Rush
Дата сообщения: 11.02.2009 12:25
KapralBel
Ничего.

Файл любой. Я пробовал различные. Со смешанным текстом при строке поиска латиницу находит, а кириллицу нет.
Например, в файле с таким содержимым:

Код:
b
п
d
ц
z
д
Автор: KapralBel
Дата сообщения: 11.02.2009 12:48
Rush
А в какой кодировке текст?
Ищет национальные буквы - когда они в OEM кодировке
Автор: U235
Дата сообщения: 11.02.2009 12:56
Rush
Файл в котором ищется, должен быть в кодировке 866, а не 1251.
Или батник должен быть написан в 1251 кодировке.
Автор: Rush
Дата сообщения: 11.02.2009 13:01

Цитата:
Файл в котором ищется, должен быть в кодировке 866, а не 1251.

Понятно.
А можно задать в комстроке (не батнике) чтобы искал в 1251?
Автор: KapralBel
Дата сообщения: 11.02.2009 13:22
Rush
боюсь никак
Автор: SimakPSP
Дата сообщения: 11.02.2009 15:06
Скажите пожалуйста можно ли создать батник чтоб при помощи его копировать и упаковывать файлы с разных папок в одну папку , например мне нужно скопировать три файла

D:\1C_BASE\Pc\R11.zip
D:\1CB_BASE\PC\RB11.zip
D:\Doc\Price08.xlsx

в папку одним архивом

C:\Doc\

и если возможно отправить потом этот архив по почте через outlook
Автор: KapralBel
Дата сообщения: 11.02.2009 15:39
SimakPSP
Одним архивом - да
вочти все архиваторы поймут прямое указание в качестве источника всех трех файлов

а вот отправить через оутлук - врядли - это чудо нсколько я помню не позволяет полностью автоматизировать процесс.

Создать то оно создаст - а вот отправить - придется ручками нажимать на пимпочку
Автор: Kilyan
Дата сообщения: 11.02.2009 15:51
Неоходима еще одна реализация:
1) Засечь время
2) выполнение процедуры
3) засечь время окончания - Вывод времени работы процедуры
Если это не сложно отпишите как?

Добавлено:
Вот что нашел: [more]@Echo off
Call :Sec strt1
rem Здесь размешается исследуемый кусок кода скрипта
Call :Sec strt2
Set /a delta=%strt2%-%strt1%
Echo Время выполнения = %delta%с
Pause>nul
rem или ping -n 6 127.0.0.1>nul (5-и минутная пауза вместо подтверждения завершения)
Exit
:Sec
Set /a %1=3600*%time:~0,2%+60*1%time:~3,2%+1%time:~6,2%
GoTo :EOF[/more] - Кажется работает! Но если есть альтернатива - с удовольствием не откажусь!
Автор: KapralBel
Дата сообщения: 11.02.2009 16:48
Kilyan
Нужно именно время работы? или время начала/окончания хватит?
Автор: Kilyan
Дата сообщения: 11.02.2009 19:07
KapralBel
Время работы!
Автор: Studio13 OutlaW
Дата сообщения: 12.02.2009 17:16
Так и не смог разобраться, возможно ли сделать в батнике такое:
Чтобы команды срабатывали только после определенной нажатой клавиши...
Например...
@echo off
color 02
echo Чтобы Скопировать файл "Gegrby.txt" нажмите 1, чтобы переместить файл нажмите 2, чтобы удалить файл нажмите 3.
......Какой-то код......
......Какой-то код......
.....goto labelmove
:labelmove
move Gegrby.txt SP\
move SP\Gegrby.txt
.....goto labelmove[q][/q]

:labelcopy
copy Gegrby.txt SP\

и так же для удаления

точно не знаю через goto...может так
Автор: 01MDM
Дата сообщения: 12.02.2009 17:28
Studio13 OutlaW
Команда set /p поможет в решении задачи:

Код:
@echo off
setlocal
chcp 1251 1>nul
color 02

echo.
echo чтобы скопировать файл "Gegrby.txt" нажмите 1,
echo чтобы переместить файл нажмите 2,
echo чтобы удалить файл нажмите 3.
echo -------

set answer=0
set /p answer=" > "

if %answer%==1 goto:labelcopy
if %answer%==2 goto:labelmove
if %answer%==3 del Gegrby.txt
goto:eof

:labelmove
move Gegrby.txt SP\
goto:eof

:labelcopy
copy Gegrby.txt SP\
Автор: Studio13 OutlaW
Дата сообщения: 12.02.2009 19:24
01MDM
Спасибо все заработало)
Немного вопросов...

chcp 1251 1>nul - это случайно не относится к кодировки?

---------------

Что означает setlocal ? О том, что данные проходят на данном компьютере или это вводит в пакет команду SET?

---------------

Почему после идет goto:eof ? Это ведь команда, которая вызывает передачу управления к концу пакета?


Справка в cmd хоть и большая, но не с первого раза найдешь в ней, то, что тебе нужно.
Автор: 01MDM
Дата сообщения: 12.02.2009 20:35
Studio13 OutlaW


Цитата:
chcp 1251 1>nul - это случайно не относится к кодировки?


Переключает кодировку в консоли на cp1251 - на случай если батник написан в вин-кодировке. Если он изначально в cp866, то эту строчку надо удалить.


Цитата:
Что означает setlocal ?

В данном случае эта команда необязательна, просто привычка. Setlocal ограничивает видимость переменных, которые действуют только после нее до конца файла или до команды endlocal. В противном случае переменные, определенные в батнике, будут "жить" до окончания сеанса в cmd.exe


Цитата:
Почему после идет goto:eof

Что бы команды в метках не выполнялись, если будут введено неправильное значение или вообще ничего не будет введено.



Автор: Studio13 OutlaW
Дата сообщения: 12.02.2009 21:01
01MDM

Цитата:
Переключает кодировку в консоли на cp1251 - на случай если батник написан в вин-кодировке. Если он изначально в cp866, то эту строчку надо удалить.

Написал в вин, только после этого системный текст, например, "перемещение файлов" становится нечитаемым) "‚ᥣ® „®Ўа®Ј®!" -типо вот такого.


Вообще я сохраняю в Дос кодировки-русский текст читается и системный тоже, но мне просто хочется знать, как быть в таком случае....
Автор: dimpase
Дата сообщения: 13.02.2009 09:34
привет всем!
Скажите , каким оброзом можно с помощью батника, внести информацию из текстового файла в exce или в DBF ?
Автор: Kilyan
Дата сообщения: 13.02.2009 09:46
Необходима помощь! Не играет роли(штатными или не штатными средствами).
Есть текстовый файл с содержанием [more]440800;31.01.2009;402/0000424/440801;Кредитна спiлка "Агро-кредит";не платник;9.78;8.15;1.63;;;;01.2009;001;;;;;0;1;
440800;31.01.2009;403/0000425/440801;Кредитна спiлка "Казна";не платник;4.66;3.88;0.78;;;;01.2009;001;;;;;0;1;[/more] c тучей строк!
Как указав маску текста: заменить ее на указанную.
В данном случае в тексте встречается ...2009;403/0000425/440801;Креди... - выделенный фрагмент нужно вообще убрать (т.е. от "/" до "/" .)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: DVD-video (ДВД-видео) - что и как (часть 3)


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