На главную страницу сайта celitel.info
Вы не вошли в систему! [ ВОЙТИ ] или [ ЗАРЕГИСТРИРОВАТЬСЯ ]
CELITEL » Справочник команд bat/cmd » Тема: Как подставить в переменную подстроку N-ой строки ? -- Стр. 1  | Перейти в: 

Послал Сообщение
shash
Новичок

Из: СПб
Сообщения: 1
 Как подставить в переменную подстроку N-ой строки ?
Послано: 13-12-2015 18:29
            

Добрый день!

Не подскажете, как решить такую задачу?:

Есть текстовый файл с произвольным количеством строк. Задача - вывести список файлов из определенной директории,
в именах которых присутствует часть какой-то (пусть последней для примера) строки. Напр:

если в текстовом файле test.txt есть строчки:

T003@@@@.BB705L4Z
T003@@@@.BK123L4Z
T003@@@@.EU753L4Z
T003@@@@.RR044L4Z
T003@@@@.EO081L4Z
T001@@@@.EI206L4Z
T001@@@@.EH191L4Z

то команда в BAT-файле
dir D:Tmp*EH191*.* /S /B > result.txt

выведет список всех файлов, содержащих "EH191" с путями.
То, что нужно.
Но хотелось бы в качестве аргумента команды DIR вместо явного указания маски *EH191*.*
подставить некую переменную, которая берется из части какой-то строки из файла test.txt,

Вообще надо вывести список файлов для нескольких последних строк, содержащие в имени напр: EO081 EI206 EH191

Заранее спасибо!

Rainbow
Новичок

Из: Н/Д
Сообщения: 1
 Как подставить в переменную подстроку N-ой строки ?
Послано: 07-02-2016 14:51
            

Я прочитал в вашей ссылке "Еще один способ определения длины строки, как ни странно - достаточно быстрый:"

@Echo Off
Set a=qwertyuiop
Echo.%a%>"%TEMP%\%~n0.tmp"
For %%i In ("%TEMP%\%~n0.tmp") Do Set /A z=%%~zi-2
Echo %z%

Это разве так можно выполнить?

healer
Администратор

Из: Москва
Сообщения: 24467
 Как подставить в переменную подстроку N-ой строки ?
Послано: 16-02-2016 09:30
            

Я так полагаю, что это можно было сохранить в файл и запустить))
Для просмотра результата удобнее в конце поставить PAUSE.
Почему способ странный.
Фактически во временной директории создается файл, туда записывается переменная, а затем определяется длина файла, которая равна длине переменной плюс два стандартных (для windows)символа. См. таблица кодов символов Windows.

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

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

Несмотря на то, что способ не подтормаживает, в чистом виде я бы настоятельно его не рекомендовал.
Даже на беглый взгляд видны его серьезные недостатки.
Что будет, если одновременно несколько программ будут выполнять такой скрипт?
Есть ли полная гарантия, что при определении размера файла в файле сейчас находиться именно ваша переменная, а не перезаписанная другим процессом?
Или нужно несколько переделать исходный код.
1. Использовать уникальное имя временного файла.
2. После использования файла - удалить его. (Оставлять за собой мусор - плохой тон)

~~~~~~~~~~~~

Здоровья Вам. Духовного и физического.



Статистика

Сейчас у нас: и 6 Гостя(ей)
Всего сообщений: 26682
Всего тем: 1151
Поздравляем: Svetlanka, melitrisych88, igoreker666 !!

Based on:

 

  my counter Valid XHTML 1.0 Strict Valid CSS!