![]() |
CMD - читаю из файла, если первый символ строки =*, то вывести на экран строку
Читаю из текстового файла строки
проверяю каждую строку, если одна из них начинается на символ *, то вывожу эту строку на экран и т.д. вот кусок моих страданий, но он не работает: For /F "usebackq tokens=* delims=" %%i In ("list.txt") Do ( set d=%i:~0,1% if %d%== * @echo STROKA= %%i %d% ) если просто ввести с клавы в переменную, то set d=%i:~0,1% if %d%== * @echo STROKA= %%i %d% код срабатывает Как бы это организовать правильно ? |
Цитата:
Код:
@echo off |
Спасибо, работает)))
Код:
@echo off я уже три дня пытаюсь разобраться в этом старом программировании. (вобще-то я программирую на делфи и прочем) подскажите, как понят этот язык ? почему ставятся проценты, а иногда восклицательные знаки ? = и == я понял логику почему иногда два процента перед переменной, а иногда окружают переменную с краев? почему иногда значение текстовой переменной без двойных кавычек, а иногда как у вас с кавычками ? почему !s:~0,1! - в кавычках ? почему echo - без собачки спереди ? (кажись понял, вывод на экран убран вначале кода... ЭХО ОФФ) помогите разобраться... |
Цитата:
Цитата:
Код:
if == * @echo STROKA= %%i Цитата:
Цитата:
Цитата:
В подобном случае: Цитата:
Цитата:
|
А не проще найти эти строки?
Код:
findstr "^\*.*" file.txt |
Спасибо за пояснение, правда я не все понял )))
блин))) даже С++ проще )))) |
|
cmd:
Код:
findstr ^\* file Код:
grep '^*.*' file Код:
gawk /^*/ file Код:
sed -n /^*/p file Код:
Select-String ^\* file Код:
gc file | ? {$_.StartsWith('*')} |
Цитата:
|
Цитата:
|
Цитата:
Код:
> sed --version Код:
> type 1.txt |
Теперь понял о чем речь, - да, кавычки нужны, если в файле есть строки, содержащие символ * где-нибудь в середине строки. Отталкивался же от противного, так что вполне справедливое заечание с Вашей стороны.
|
эх, сложно для меня все это.
с процентами и восклицательными знаками так и не разобрался пробовал сегодня приклеивание к переменной одного символа сделать, опять не вышло. суть такова(к примеру на Паскале): begin s:=''; for i:=1 to 10 do begin s:=s+'#'; writeLn(s); end; end. должен получить на экран результат: # ## ### ##### ###### и т.д. до 10 Как это оформить на CMD ? |
Цитата:
Код:
@echo off |
Еще можно так (если известна длина строки):
Код:
@echo off |
Добрый День подскажите пожалуйста,
:Start if %time:~0,2% LSS 10 goto two set re=%date%(%time:~0,2%-%time:~3,2%).htm "C:\Program Files (x86)\Compare Suite\comparesuite.exe" "C:\Users\Alex\Desktop\equipment register\equipment register1.xls" "C:\Users\Alex\Desktop\equipment register\equipment register.xls" -r:C:\Users\Alex\Desktop\test\%re% -AllowMultipleInstance if not errorlevel 1 goto TO :two "C:\Program Files (x86)\Compare Suite\comparesuite.exe" "C:\Users\Alex\Desktop\equipment register\equipment register1.xls" "C:\Users\Alex\Desktop\equipment register\equipment register.xls" -r:C:\Users\Alex\Desktop\test\%date%(%time:~1,1%-%time:~3,2%).htm -AllowMultipleInstance :TO for /f "usebackq delims=" %%i in ("28.03.2022(12-06).htm") do ( set sVar=%%i if "%sVar" equ " <td class="val">73</td>" goto break ) goto end :break del /q "07.04.2022(11-56).htm" :end timeout /t 3600 goto Start почему то при сравнении строки не отрабатывает goto break. Спасибо |
"%sVar" - ошибка в синтаксисе, надо "%sVar%" , но это тоже работать не будет из-за отложенного раскрытия переменной в цикле.
set sVar=%%i в вашем цикле не нужно вовсе. напишите сразу: if "%%i"==" <td class="val">73</td>" goto :break Кстати, equ в If применяется для сравнения численных значений. Я ничего не проверял, возможно где-то еще не то. |
Время: 22:03. |
Время: 22:03.
© OSzone.net 2001-