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

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

Автор: res2001
Дата сообщения: 15.09.2010 12:52
wolf0425

Цитата:
это ты так плохо тестировал.

точно, единицу валит на экран, а двойка присоседивается к перенаправлению
Автор: Maqentaer
Дата сообщения: 15.09.2010 14:09
обновил свой пост с кодом, учел замечания.

wolf0425

Цитата:
sed 4.0.7 из unixutils от 10.2003г - те же 95к, и работает без либ.
sed 3.0.2 из unixutils от 04.2003г - вообще 49кб, и конечно же тоже не требует либ, в unixutils все утилиты так скомпилированы...
что 4.2 требует трех либ на мегабайт - неудобно, да, но программисты не подсевшие на Cygwin видимо перевелись...

не знал, спасибо.
буду пользоваться.
Автор: SLIDER999
Дата сообщения: 15.09.2010 16:07
как мне скопировать строки МЕЖДУ известными из одного текстового в другой
например? скопировать выделенное
[FloppyFiles.0] - эту строку знаю
d1,disk1,disk101
d1,ntdetect.com
d1,ntkrnlmp.exe
d1,setupldr.bin
d1,txtsetup.sif
d1,biosinfo.inf
d1,Bootfont.bin
d1,kbdus.dll



[FloppyFiles.1] - эту строку знаю
d1,disk1,disk102
d1,hal.dll
d1,halacpi.dll
d1,halapic.dll
d1,halaacpi.dll
d1,drvmain.sdb
Автор: king_stiven
Дата сообщения: 15.09.2010 16:11
SLIDER999
sed использовать религия не мешает? тогда предложу варианты.
Автор: SLIDER999
Дата сообщения: 15.09.2010 16:15
king_stiven
Не мешает. Нужно только разобраться в нем чуток. Жду предложений.
Автор: king_stiven
Дата сообщения: 15.09.2010 16:27
Печатать часть файла между двумя регулярными выражениями (включительно):
sed -n "/Iowa/,/Montana/p" (регистро зависимый)
Автор: SLIDER999
Дата сообщения: 15.09.2010 16:35
king_stiven
Эм... Как мне это прикрутить к батнику? Ничего не пойму
Автор: king_stiven
Дата сообщения: 15.09.2010 16:59
sed -n "/x/,/y/p" file.txt | sed "1 d;$ d"
замени x и y своими строками


Добавлено:
любой символ (кроме специальных: \[.^*$ ) является регулярным выражением себя;

\ - перед любым символом, кроме цифр и "(" , ")" , означает этот символ. ( Экранирование специальных символов).
Автор: SLIDER999
Дата сообщения: 15.09.2010 18:19
king_stiven
спасибо, я уже разобрался.
Теперь другой вопрос:
я через команду for копирую строки:
qwerty.sys
asdfgh.ini
как мне превратить ее в qwerty.sy_ (такие строки рандомные)
делаю пока так tokens=1-2 delims=. и вывожу %%i.* Но это не устраивает. Копируются лишние файлы, попадающие по маске.

Заранее спасибо.
Автор: SLIDER999
Дата сообщения: 16.09.2010 06:36
Вобщем мне нужно заменить последний символ в каждой строке на *
Автор: bomzzz
Дата сообщения: 16.09.2010 06:46
ну замени. считай все строчки по очереди, потом отрежь последний символ и допиши звездочку.

Добавлено:

Цитата:

@ECHO OFF
COLOR 9F
CLS
setlocal enabledelayedexpansion
for /F "delims=" %%I in ('type my.txt') do (
SET NEWSTRING=%%I
SET NEWSTRING=!NEWSTRING:~0,-1!*
ECHO !NEWSTRING!>>MY1.txt
)
DEL MY.TXT
REN MY1.TXT MY.TXT
PAUSE
Автор: SLIDER999
Дата сообщения: 16.09.2010 06:51
bomzzz
так я не знаю какой командой это сделать. Как определить последний символ в строке?
Автор: bomzzz
Дата сообщения: 16.09.2010 06:53

Цитата:

@echo off
set A=12345
::задаем значение переменной A
echo %A:~0,1%
::вывод ПЕРВОГО СИМВОЛА из значения переменной
echo %A:~-1,1%
::вывод ПОСЛЕДНЕГО СИМВОЛА из значения
echo %A:~-3%
::вывод ТРЁХ ПОСЛЕДНИХ символов
echo %A:~0,3%
::вывод ТРЁХ ПЕРВЫХ символов
echo %A:~1%
::вывод значения БЕЗ ПЕРВОГО символа
%PATH:~-10%
::извлечет последние 10 символов переменной PATH.
%PATH:~0,-2%
::извлечет все символы переменной PATH, за исключением 2-х последних.
Автор: king_stiven
Дата сообщения: 16.09.2010 06:55

Цитата:
заменить последний символ в каждой строке на *

sed -nr "s/(^.*).$/\1*/gp" file.txt
Автор: bomzzz
Дата сообщения: 16.09.2010 07:01
SLIDER999
фигня получается, управляющие символы так нельзя передать. седом лучи
Автор: SLIDER999
Дата сообщения: 16.09.2010 07:02
bomzzz спасибо
king_stiven спасибо. Испльзовал ваш метод. Где можно прочитать подробную докуметнацию по sed комендам?
Автор: bomzzz
Дата сообщения: 16.09.2010 07:02

Цитата:
@ECHO OFF
COLOR 9F
CLS
for /F "delims=" %%I in ('type my.txt') do (
set NEWSTRING=%%I
call :next
)
DEL MY.TXT
REN MY1.TXT MY.TXT
PAUSE
goto :eof
:next
echo %NEWSTRING:~0,-1%*>>MY1.TXT

так хоть восклицательные знаки передаюца

Добавлено:
SLIDER999
на сайте седа и в хелпе
Автор: SLIDER999
Дата сообщения: 16.09.2010 07:26
И последнее (наверное): как можно изменить регистр файлов? В частности интересует перевод только в верхний.
Автор: king_stiven
Дата сообщения: 16.09.2010 07:38
загугли
sed 's/foo/bar/' (замена только первого совпадения в строке)
Автор: res2001
Дата сообщения: 16.09.2010 08:08
SLIDER999

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

Думаю можно sed заставить изменить регистр, раз уж ты все равно на него завязался.
Автор: Maqentaer
Дата сообщения: 16.09.2010 10:33
либо sed и \U
либо:

Код: for /f "tokens=1* delims=-" %%a in ('find "" "%~1" 2^>^&1') do set upcasetext=%%b
set upcasetext=%upcasetext:~1%
Автор: wolf0425
Дата сообщения: 16.09.2010 10:44
Maqentaer, у тебя в токене ошибка

Код: for /f "tokens=* delims=-" %%a in ('find "" "%~1" 2^>^&1') do set upcasetext=%%a
set upcasetext=%upcasetext:~1%
Автор: bomzzz
Дата сообщения: 16.09.2010 11:00
прикольна

Цитата:

ECHO OFF
COLOR 9F
CLS
set string=dsdfghhjkk
for /f "tokens=*" %%a in ('find "" "%string%" 2^>^&1') do set upcasetext=%%a
set upcasetext=%upcasetext:~16%
echo %upcasetext%
pause
Автор: Grafus
Дата сообщения: 16.09.2010 11:05
Описание:
Есть некая группа консольных программ запускаемых через *.cmd

Код:
@echo off
name1.exe
name2.exe
name3.exe
Автор: SLIDER999
Дата сообщения: 16.09.2010 11:15
Насколько я понимаю преобразование регистра происходит в текстовом документе. А мне нужно чтоб скопированные файлы перевелись в верхний регистр
Автор: res2001
Дата сообщения: 16.09.2010 11:23
SLIDER999
дык смотри пост Maqentaer, оригинальный метод перевода имен файлов в верхний регистр
Автор: NIKZZZZ
Дата сообщения: 16.09.2010 11:29
Grafus

Цитата:
Как сделать, что бы они логировались batником, но при этом продолжали вывод инфы на монитор?

В шапке - Полезные утилиты, mtee
Автор: yurkesha
Дата сообщения: 16.09.2010 11:39
bomzzz
Не прикольно - зависимо от языка и к тому же файл может найтись
А вот [more=так]@ECHO OFF
COLOR 9F
CLS
SET "STRING=dsdfghhjkk"
FOR /f "TOKENS=1* DELIMS=:" %%a IN ('FIND "" ":%STRING%" 2^>^&1') DO SET "UPCASETEXT=%%b"
SET UPCASETEXT=%UPCASETEXT:~2%
ECHO %UPCASETEXT%
PAUSE[/more] должно сработать корректно...
Автор: king_stiven
Дата сообщения: 16.09.2010 12:09
echo маленький щенок | sed "s/[^ ]*/\U&/g"
Автор: SLIDER999
Дата сообщения: 16.09.2010 12:22
Я конечно понимаю, что вы знаете как использовать команду. Но я догнать не могу.
У меня есть папка 2win, в которой есть много файлов. Мне нужно их перевести в верхний регистр.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Windows 7 Starter


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