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

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

Автор: Elroir
Дата сообщения: 03.06.2007 13:10
melyash
В командной строке запусти "chcp", каков результат?
Как ты запускаешь батник - из командной строки или двойным кликом в эксплорере?
Автор: melyash
Дата сообщения: 03.06.2007 13:15
Elroir

"Текущая кодовая страница: 866"

Запускаю в эксплорере, т.к. нужно будет кинуть батник в автозагрузку

Добавлено:
Elroir
Огромное спасибо, обойдемся англицким вариантом
Автор: Elroir
Дата сообщения: 03.06.2007 13:22
melyash
Очень странно - если код батника ты пишешь в Блокноте (notepad), то строчка "chcp 1251>nul" как раз и должна делать так, чтобы в открывающемся консольном окне, русские буквы отображались нормально. Если все так - ничем больше помочь не могу . Может быть у тебя какие-то региональные настройки мешают нормальному выводу кириллицы.
Автор: Maza Faka
Дата сообщения: 03.06.2007 14:56
Robby
Скоппируй консольную утилиту "rar.exe" в папку "WINDOWS"

Код:
@echo off
for /r d:\temp %%a in (*.rar) do (
rar e -inul "%%a" "%%~dpa"
if errorlevel 1 (echo Unpack error>> "%%~dpa\%%~na.txt") else (del /f /q "%%a")
)
Автор: FAPSUK
Дата сообщения: 04.06.2007 09:30

Цитата:
FAPSUK
Попробуй так:

Код:
@echo off
chcp 1251>nul
set count=1
for /f "delims=" %%a in (list.txt) do (
echo %%a | find /i "район">nul && set /a count+=1
call :sort_ "%%a")
pause
goto :eof

:sort_
echo %~1>> %count%.txt



Не получается

Как я понимаю в файле List.txt задается ключевые слова по каким надо резать файл на куски?


при выполнении команды создается файл 1. с текстом внутри
Район: .txt
Район: .txt
Район: .txt
Район: .txt

и кирдык )

Необходимо файл вида нарезать на отдельные куски
как лучше это сделать?

--------------------------------------------------------------------------
Район: ШОВГЕHОВСКИЙ Куп: 435 Статья: 1 ПРОИСШЕСТВИЕ

01.10.2005 года в 13.20 рапорт ОД Хуажева о том, что 30.09.2005 года около
16.00 час в а.чччччччччччччч в своем домовладении по ул.ччччччччччччч , 1,
скоропостижно скончался гр-н Киков Рамазан Каральевич, 1964 г/р., не
работала. Предположительный причина смерти - отравление суррогатами
алкоголя. Труп в СМЭ не направлялся, забрали родственники. Выезжали нач
РОВД Афашагов, прокурор чччччччччч , нач.КМ Шагужев, ОУР Азашиков, СО Хуажев,
УУМ Коблев, БЭП Хакуринов, ОД Хуажев.
--------------------------------------------------------------------------
Район: УВД Куп: 7507 Статья: 2 ПРОИСШЕСТВИЕ

01.10.2005 года 08.50 /ЖУИ-11526 от 30.09.2005г/ рапорт УУМ Андрианова о
том, что 30.09.2005 года 16.30 в г.ччччччччччиз АРНД /наркодиспансер/
бригадой скорой помощи в МГБО доставлен гр-н Пугачев Александр Николаевич
1970 г/р, прож. ччччччччччч р-н, п.Приречный, ул. чччччччччччччч, 18, кв.6, с
д-зом отравление суррогатами алкоголя, который 30.09.2005 года 17.00
скончался в реанимационном отделении. Обст-ва уст-ся. Выезжали: УУМ
Андрианов.
--------------------------------------------------------------------------
Район: УВД Куп: 7515 Статья: 2 ПРОИСШЕСТВИЕ

01.10.2005 года 15.00 /ЖУИ-11560 от 01.10.2005г/ рапорт УУМ Семкина о
том,что 01.10.2005 года 11.00 в г.чччччч в своей кв.138 по ул. 12 марта,
150, кор.2, скоропостижно скончалась гр-ка Сеинтова Наталья Алексеевна,1956
г/р,прож. там же, н/р. Труп без видимых признаков насильственной смерти
направлен в АРБСМЭ. Выезжали: СП Казаченко, СМЭ Гайдаева, УУМ Семкин.
Автор: igor_andreev
Дата сообщения: 04.06.2007 11:23
FAPSUK

Цитата:
Труп без видимых признаков насильственной смерти

ужоснах
FAPSUK
По дате вытаскивать каждую отдельную сводку проблематично, потому что дата встречается не единожды по тексту.
Алгоритм приблизительно такой:
Вроде как в начале каждой сводки слово "Район:" присутствует и более с двоеточием не повторяется. То есть надо выдернуть номера строк, начинающихся с "Район:"

@ECHO OFF
CHCP 1251
MORE test.txt | FIND /N /I "Район:"

или FINDSTR использовать вместо FIND, и парные строки отдавать SED.EXE, она умеет выводить на экран с такой-то по такую то строки из файла.

Например из файла test.txt вытащить строки с 12 по 22:
SED -n "12,22p" test.txt>%count%.txt
потом с 23 по 36:
SED -n "23,36p" test.txt>%count%.txt
Получатся файлы 1.txt,2.txt и тд, потом уже попробовать найти в них дату и переименовать. У меня времени нет сейчас батник полностью писать, убегаю уже, щас может кто еще в этот топик заглянет и в кучу алгоритм соберет тебе
Автор: Maza Faka
Дата сообщения: 04.06.2007 11:39
FAPSUK
У меня файл list.txt нормально "режется", создаются текстовые файлы с именами 1.txt, 2.txt и т.д. и в каждом файле отдельная информация по районам.
В какой кодировке исходный текст?

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

Добавлено:
igor_andreev

Цитата:
Вроде как в начале каждой сводки слово "Район:" присутствует и более с двоеточием не повторяется. То есть надо выдернуть номера строк, начинающихся с "Район:"

Так и сделал:

Код:
@echo off
chcp 1251>nul
set count=1
for /f "delims=" %%a in (list.txt) do (
echo %%a | find /i "район">nul && set /a count+=1
call :sort_ "%%a")
pause
goto :eof

:sort_
echo %~1>> %count%.txt
Автор: FAPSUK
Дата сообщения: 04.06.2007 12:38
Maza Faka, igor_andreev


Цитата:
Может в этом проблема:
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы


Да. это я сделал


Цитата:
В какой кодировке исходный текст?


Кодировка DOS



Цитата:
у меня всё нормально разбирается, то есть в 1.txt вносится одно происшествие, в 2.txt следующее и т.д., то есть на каждое происшествие отдельный текстовый файл


Проблема оказалась еще в том, что текстовые файлы начинаются так:


МВД РФ
Министерство внутренних дел ХХХХХХХХХХХХХХХХХХХХХ
ШТАБ
Дежурная часть
ОПЕРАТИВНАЯ СВОДКА
о преступлениях и происшествиях
которые поступили в органы внутренних дел ХХХХХХХХХХХХХ
с 6 часов 16/05/07 до 6 часов 17/05/07

==========================================================================
|Прес-|Происшес|Раск- |Раск- |Уст. лиц|Груп-|Задер- |
РАЙОH: |тупле|твий |рыто |рыва -|соверш. |пой |жано по|
|ний | |прест.|емость|прест. |лиц |ст. 91 |
--------------------------------------------------------------------------
ХХХХХХХХХ | 14| 4| 11| 78.57| 11| 0| 0|
ХХХХХХХХХХХ | 4| 2| 4|100.00| 5| 1| 0|
ХХХХХХХХХХХХХ | 4| 0| 3| 75.00| 2| 0| 0|
ХХХХХХХХХХХХХ | 6| 1| 6|100.00| 5| 0| 0|
ХХХХХХХХХ | 4| 0| 4|100.00| 3| 0| 0|



Ф А Б У Л А

- К У П -


--------------------------------------------------------------------------
Район: ХХХХХХХХХХХХХХХХХ Куп: 933 Статья: 158 НЕ РАСКРЫТО

13.10.05 в 19.45 заявление гр-ки Берзеговой Мариет Пшимафовны 1968 г.р.,
прож. а. ХХХХХХХХХХ ул. ЧЧская 14/18, бухгалтер ООО "СТО-сервис" а.
ХХХХХХХХХ , о том, что 13.10.05 в период с 10.00 до 19.00 в а. ХХХХХХХХ н/у
лица, путем взлома врезных замков на входных дверях и металлической решетке,
проникли в ее квартиру, откуда тайно похитили деньги в сумме 133 тыс. руб.
/купюрами по 500 руб. и 1000 руб./, принадлежащие руководителю ООО
"СТО-сервис" гр-ну ХХХ Схатбию Довлетбиевичу 1964 г.р., прож. а.
ХХХХХХХХХХ ул. Северная 56. С МП изъято: 9 отпечатков пальцев рук, 3 замка,
деньги в сумме 51 тыс. руб. Выезжали в 19.55: нач. КМ Абидов, нач. ОУР
Бороков, СО Молчанов, ОУР Хамирзов, УУМ Тутарищев, ЭКЦ Милов.
--------------------------------------------------------------------------
Район: ХХХХХХХХХХХХХХХХХХХХХХХХ Куп: 764 Статья: 158 РАСКРЫТО

13.10.05 в 09.30 явка с повинной от гр-на Нехай Руслана Айдамировича 1976
г.р., прож. а. ХХХХХХХХХ ул. Д.Нехая 18, н/р, о том что 06.10.05 в а.
Вочепший он по предварительному сговору с гр-нами: 1. ХХХ Тимуром
Юсуфовичем 1981 г.р., прож. а. ХХХХХХХХХ ул. Д.Нехая 14, н/р; 2. ХХХХХ
Рустамом Вячеславовичем 1981 г.р., прож. а. ХХХХХХХХХ ул. Д.Нехая 12, н/р,
совершили кражу быка черной масти, находившегося на вольном выпасе в 1 км. в
южном направлении от а. ХХХХХХХХХ , которого впоследствии забили, а мясо сдали
в мясной павильон в п. ХХХХХХХХХХ . Опрошены, обязаны явкой. С МП изъято:
деревянные брусья с металлическими тросами, кухонный нож, 3 отрезка бельевой
веревки со следами красно-бурого цвета. Ранее заявление не поступало.
Выезжали в 09.40: ОУР Шехетль, УУМ Анчок, Хут.
--------------------------------------------------------------------------


Написанный BAT-файл ругается на символы " | " тексте Нельзя ли их как-то сначала заменять на пробелы или другие симводы а потом обрабатывать или вообще игнорировать?

К тому же в Шапке один раз встречается слово " РАЙОH: " - но это мелочь..
в базе все равно будет происходить посик по ФИО и АДРЕСУ...

И еще, все файлы имеют имена вида:
14051405.TXT
15051505.TXT
16051605.TXT
Можно ли работать с ними? Не сливая ежедневные сводки в один файл ФАРом.

Автор: igor_andreev
Дата сообщения: 04.06.2007 13:42
FAPSUK
Попробуй:

Код:
@echo off
chcp 1251

set /a "count=1"
set "line=1"

for /f "tokens=1 delims=[]" %%a in ('more test.txt ^| find /n "Район:"') do call :write_it "%%a"
goto eof

:write_it
set "prev_line=%line%"
set /a "line=%~1-1"
sed -n "%prev_line%,%line%p" test.txt>%count%.txt
set /a "count+=1"
Автор: FAPSUK
Дата сообщения: 04.06.2007 14:11
igor_andreev

Цитата:
FAPSUK
Попробуй:

Код:
@echo off
chcp 1251

set /a "count=1"
set "line=1"

for /f "tokens=1 delims=[]" %%a in ('more test.txt ^| find /n "Район:"') do call :write_it "%%a"
goto eof

:write_it
set "prev_line=%line%"
set /a "line=%~1-1"
sed -n "%prev_line%,%line%p" test.txt>%count%.txt
set /a "count+=1"


test.txt два раза замени на свою сводку. Sed у меня эта ftp://ftp.simtel.net/pub/simtelnet/msdos/txtutl/sed15x.zip , можешь поновее какую-нить качнуть, непринципиально. Если правильно разобьет, то из четвертой строки каждого файла дату-время останется вытащить и переименовать.


МУЖИКИ СПАСИБО !
Все отлично работает!
А как мне приспособить програмку под файлы с маской *.txt ?
Чтобы не клеить кучу сводок в один большой файл ?
Автор: Maza Faka
Дата сообщения: 04.06.2007 14:33
FAPSUK
Во всех файлах присутствует шапка? Если да, то попробуй так:

Код:
@echo off
setlocal enabledelayedexpansion
for %%f in (*.txt) do call :sort "%%f"
goto :eof

:sort
for /f "delims=[]" %%a in ('find /i /n "- к у п -" %~1') do set skip=%%a
for /f "skip=%skip% tokens=*" %%a in (%~1) do (
echo %%a | find /i "район">nul && set /a count+=1
echo %%a>> !count!.txt)
Автор: FAPSUK
Дата сообщения: 04.06.2007 15:03
Maza Faka



Цитата:
Во всех файлах присутствует шапка? Если да, то попробуй так:


К сожалению Нет
Файлы без шапки игнорируются.


Цитата:
Код сохрани в DOS кодировке и запускай из папки с текстовыми файлами


Работает как часики!
Автор: dius80
Дата сообщения: 04.06.2007 16:15
Есть вроде бы простая задача: нужно каждую ночь очищать содержимое определенной папки. Для этого имеется простой батник с таким содержанием:

rd /s/q c:\Obmen
md c:\Obmen
xcacls c:\Obmen /t /g "domain users":c "SYSTEM":f "Administrators":f /y

Этот батник запускается ночью шедулером, но иногда папка по какой-то причине не создается, поэтому приходится создавать ее вручную. Помогите пожалуста чем можите))
Автор: KapralBel
Дата сообщения: 04.06.2007 16:30
dius80
Ты как раз и упустил самое главное - причины по которой не удаляется папка

Попытайся делать лог
Автор: Elroir
Дата сообщения: 04.06.2007 16:37
dius80
Ну или измени батник, чтобы внутри все удалялось, а сама папка оставалась бы:

Код:
cd /d c:\Obmen
rd /s/q c:\Obmen 2>nul
Автор: mitrichbel
Дата сообщения: 04.06.2007 20:25
Maza Faka
спасибо, конечно, но
Цитата:
Запускаешь батник с нужной цифрой в качестве аргумента
невозможно, мягко говоря - этих файлов почти 1000 штук. При этом тех, которые надо найти, - может быть два десятка пар, сомневаюсь, что больше... Каюсь, моя недоработка, неполностью сформулировал условие(
То есть хотелось бы, чтоб батник сам перебирал файлы попарно и сравнивал последние части, что ли. Ну или как-то иначе, но без ручного ввода в любом случае
Автор: sadmn
Дата сообщения: 04.06.2007 20:27
Elroir
Не мог бы поподробнее рассказать про синтаксис и реальные действия двух комманд:

Цитата:
for /f "tokens=1* delims=:. " %%a in ('ipconfig ^| find "IP"') do set "new_address=%%b"
if "%new_address:~0,3%"=="169" goto reconnect

из поста на на 11 странице.
Интересует выделенное.
Заранее спасибо!
Автор: Elroir
Дата сообщения: 04.06.2007 21:35
sadmn
for /f "tokens=1* delims=:. " %%a in ('ipconfig ^| find "IP"') do set "new_address=%%b"
Команда "for" с ключем "/f" используется для разбора строк. В качестве ввода используется результат работы команд в скобках (текст в одинарных кавычках воспринимается как команда, которую надо запустить). Каждая строчка разбирается по отдельности.
"delims=:. " - разделителями слов в строке являются 3 символа - ":", "." и пробел.
"tokens=1*" - нас интересует первое слово (1) и оставшаяся часть вместе с разделителями (*)
'ipconfig ^| find "IP"' - запустить ipconfig, вывод перенаправить команде find. Результатом будут все строчки, в которых встречается подстрока "IP".
Посмотрим что происходит, когда есть соединение с интернетом (текст из поста Tjomich):
find найдет две подходящие строки
IP-адрес . . . . . . . . . . . . : 169.254.195.178
IP-адрес . . . . . . . . . . . . : 91.124.246.1
и передаст их на разбор for-у. Каждая строка разбивается на слова (tokens) и эти слова подставляются в переменные %%а - первое слово , %%b - остальная часть.
Первое слово в каждой строке это "IP-адрес", а остальная часть (пропускаем все разделители) - это цифры вместе с точками.
При разборе первой строки, в переменную new_address записывается значение 169.254.195.178. При разборе второй строки туда же записывается значение 91.124.246.1.
Когда соединение нет, for будет обрабатывать только одну строку и в переменной new_address будет значение 169.254.195.178.

if "%new_address:~0,3%"=="169"
Чтобы не сравнивать IP адрес полностью, возьмем из переменной new_address только первые 3 символа (0 - с какого места начинать, 3 - количество символов, которые надо взять).
В общем виде, когда нужно выделить подстроку из переменной, используется такой синтаксис: %var:~n% или %var:~n,m%. В первом варианте мы выделяем подстроку начиная с n-ого символа (нумерация идет с 0) и до конца, во втором варианте - берем m символов начиная с n-ого. n и m могут быть отрицательными - тогда отсчет идет с конца.
Советую почитать справку по команде for и set.


Автор: Elroir
Дата сообщения: 05.06.2007 00:20
mitrichbel
Попробуй этот код:

Код:
@echo off
setlocal enabledelayedexpansion
echo.
for /r %%a in (*.txt) do call :check %%~na
for %%a in (!sext!) do (
echo Files grouped by "%%a" ending:
dir /s /b "* %%a.txt"
echo.
)
goto :EOF

:check
::maybe we found last two part of filename
if "%3"=="" (
::if it realy consists of two parts
if not "%2"=="" (
set "test2=no"
set "test=%2"
    ::if second part is not zero
if not !test!==0 ( set /a "test1=!test!-1"
     ::if the result is -1 - it's not a number
     if not !test1!==-1 (set "test2=yes")
    ) else (
    ::if the second part is zero - OK, it's a number
    set "test2=yes")
    ::if we found number
    if !test2!==yes (
     ::check whether it is already in the list
     echo %fext% | find " %2 ">nul
     ::if not - add it to the list
if not !errorlevel!==0 (set "fext=!fext! %2 ") else (
     echo %sext% | find " %2 ">nul
     if not !errorlevel!==0 (set "sext=!sext! %2 ")
     )
    )
)
) else (
::the filename has more then 2 parts - shift it by 1 position to the left
shift
::try again
goto check
)
Автор: dius80
Дата сообщения: 05.06.2007 07:33
KapralBel


Цитата:
dius80

Ты как раз и упустил самое главное - причины по которой не удаляется папка

Попытайся делать лог


А как это сделать не подскажешь? Или мож знаешь где об этом можно почитать?

Добавлено:

Elroir


Цитата:
dius80
Ну или измени батник, чтобы внутри все удалялось, а сама папка оставалась бы:

Код:

cd /d c:\Obmen
rd /s/q c:\Obmen 2>nul




Спасибо, думаю это решит проблему.
Автор: Maza Faka
Дата сообщения: 05.06.2007 08:30
FAPSUK

Цитата:
К сожалению файлы без шапки игнорируются.

Вот окончательный код, обрабатывает все файлы, с шапкой и без:

Код:
@echo off
setlocal enabledelayedexpansion
set var=0
for %%f in (*.txt) do call :sort "%%f"
goto :eof

:sort
for /f "delims=[]" %%a in ('find /i /n "Статья:" ^< %~1') do set /a count=%%a-1 & goto :sum
:sum
for /f "tokens=*" %%a in ('more +%count% %~1') do (
echo %%a | find /i "Статья:">nul && set /a var+=1
if not "%%a"=="" echo %%a>> !var!.txt)
Автор: Elroir
Дата сообщения: 05.06.2007 09:50
Maza Faka

Цитата:
set file1=!file1:~-6!
...
set file2=!file2:~-6!

А если число не двузначное?
Автор: sadmn
Дата сообщения: 05.06.2007 10:48
Elroir
Большое спасибо за разъяснение!
Ещё вопрос:
добавление chcp 1251>nul
в файл у меня не решает проблему отображения русских букв (но позволяет запускать файлы из папок с русскими названиями - т.е. помогает частично)
Система XP_SP2, в твикере стоит "использовать страницу 1251 вместо 1252" (но отключение этой опции не имеет эффекта), в региоальных настройках "Язык для не-юникод программ" - русский.
Где ещё можно посмотреть причину неотображения русских букв?

Зы: сохранение в DOS-866 помогает, но просто интересно разобраться, почему у меня chcp 1251 не работает..
Автор: Maza Faka
Дата сообщения: 05.06.2007 15:17
Elroir

Цитата:
А если число не двузначное?

Так ведь условием задачи было сравнивать два последних символа в имени файла
Автор: Tipulatoid
Дата сообщения: 05.06.2007 18:23
Здравствуйте.

C удивлением обнаружил, что в российской Википедии нет статьи "пакетный файл". Решил исправить сие и написал статью. Точнее не написал, а перевел с английского, но не 100% по тексту. Чуть-чуть от себя добавил, чуть-чуть переставил предложения ну и т.д. Однако технический английский мой не блестящ, поэтому прошу ознакомиться, указать на косяки, некорректные термины и вообще, сказать насколько статья адекватна Также ожидаю любых ваших предложений по добавлению/удалению той или иной инфы. Спасибо
[more]Пакетный файл

Пакетный файл (batch file)- текстовый файл в MS-DOS, OS/2 или Windows,

содержащий последовательность команд, предназначенных для исполнения

командным интерпретатором. После запуска пакетного файла, программа-

оболочка (как правило COMMAND.COM или CMD.EXE) читает его строка за

строкой и последовательно исполняет команды. Пакетный файл - аналог shell

script в Unix-подобных операционных системах.
Пакетные файлы полезны для автоматического запуска приложений. Основная

область применения - автоматизация наиболее рутинных операций, что

регулярно приходится совершать пользователю компьютера. Примерами таких

операций могут служить - обработка текстовых файлов; копирование,

перемещение, переименование, удаление файлов; работа с папками; архивация;

создание резервных копий баз данных и т.п. Пакетные файлы поддерживают

операторы if и goto (а современные Windows NT - подобные операционные

системы - и оператор for), что позволяет обрабатывать результаты

выполнения предыдущих команд или приложений и взависимости от этого

выполнять дальше тот или иной блок команд (как правило, в случае удачного

завершения приложение возвращает 0 в переменной errorlevel; в случае

неудачного - 1 или более высокое значение).
Пакетные файлы в DOs имеет расширение .bat; для других операционных систем

они могут иметь другие расширения - например .CMD в Windows NT и OS/2, или

.BTM в 4DOS или подобных оболочках.

Пакетные файлы могут содержать как внутренние команды, обрабатываемые

непосредственно COMMAND.COM или CMD.EXE, так и обращаться к внешним

утилитам, существующим в виде отдельных программ (.EXE файлов). Данные

программы значительно расширяют возможности пакетных файлов.

История
Программирование пакетных файлов появилось в MS DOS и Windows с самого

зарождения этих операционных систем. Командные интерпретаторы этих систем

предлагают два режима работы: интреактивный режим (когда пользователь

непосредственно вводит команды в командной строке и немедленно их

исполняет) и пакетный режим (когда пользователь запускает предварительно

записанную последовательность команд). Концепция обоих режимов была

почерпнута из различных Unix - оболочек, равно как и из других текстовых

интерфейсов командной строки начала 80-х годов ХХ века, таких как CP/M.
Коммндный интерпретатор в MS-DOS имеет название COMMAND.COM Эволюция этой

ветви пакетного программирования прошла через различные версии MS-DOS к

Windows 95, Windows 98 и, наконец, к Windows Me. Наиболее известным

пакетным файлом в этих системах явояется AUTOEXEC.BAT, специальный

пакетный файл, который исполняется во время загрузки операционной системы.

Новые версии Windows - Windows 2000, Windows Xp и Windows Vista основаны

не на MS-DOS, а на Windows NT. NT-подобные системы включают интерпретатор

cmd.exe, который частично совместим с COMMAND.COM Некоторые старые

возможности MS-DOS недоступны, однако вместо них появились дополнительные

возможности и команды. COMMAND.COM до сих пор включается в NT-подобные

системы для обеспечения лучшей обратной совместимости.

Существуют различные другие командные интерпретаторы, разработанные не

компанией Microsoft и предоставляющие расширенный синтаксис команд для

пакетного программирования. Примером здесь может служить продукт 4DOS.

Также имеются несколько различных компиляторов пакетных файлов,

превращающие пакетные файлы в исполняемые программы. Качество компиляции у

этих продуктов разнится весьма широко.

Пример
Пример простого пакетного файла

rem echo off отключает режим отображения команд на экране.
@echo off
rem echo. печатает пустую строку.
echo.
echo Здравствуй, мир! Нажмите любую клавишу для запуска программы

Program.exe!
pause > nul
rem Запуск программы с аргументом, переданным при запуске пакетного файла
Program.exe %1
rem Обработка возможной ошибки
if errorlevel 1 goto error
echo.
echo Программа завершила свою работу!
goto end
:error
echo.
echo Произошла ошибка при работе программы
:end
[/more]
Автор: KapralBel
Дата сообщения: 05.06.2007 18:39
Tipulatoid
Лучше выдернуть статью из справки Майкрософт - более болная
Автор: Elroir
Дата сообщения: 05.06.2007 19:26
Maza Faka

Цитата:
Так ведь условием задачи было сравнивать два последних символа в имени файла

Нееее ... -

Цитата:
Есть много текстовых файлов (в нескольких папках), имена у которых состоят из двух частей - текстовой и числовой, разделенных пробелами. В текстовой тоже могут быть и пробелы, и цифры, и любые другие символы, допускаемые файловой системой.
Мне нужно найти все файлы, у которых совпадает числовая часть их названий (то есть всё после последнего пробела в названии).

Он просто пример привел с числом 25.
Автор: Sovdep
Дата сообщения: 05.06.2007 22:11
Нужно занести найденую в файле строку в переменную
Просто так не получается
grep "Video stream:" PSNR | SET [VideoBitrate]=

Можно через промежуточный файл
grep "Video stream:" PSNR>VideoBitrate.log
SET /p [VideoBitrate]=< VideoBitrate.log

Но хотелось бы красивое решение. Что посоветуете?
Автор: Maza Faka
Дата сообщения: 06.06.2007 06:42
Sovdep

Код:
@echo off
for /f "tokens=*" %%a in ('grep "Video stream:" PSNR') do set VideoBitrate=%%a
Автор: Sovdep
Дата сообщения: 06.06.2007 09:28
Спасибо!

Я обратил внимание, в примерах часто такие конструкции встречаются for /f "tokens=*" %%a

А существуют ли другие возможности?
Я попробовал простым перебором
CALL SET
ENDLOCAL & SET
Безрезультатно.

Неужели M$ никакой магический ключ не ввела для такой очевидной задачи?!

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

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


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