|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Сравнение строк - ошибка. |
|
CMD/BAT - [решено] Сравнение строк - ошибка.
|
Пользователь Сообщения: 105 |
Профиль | Отправить PM | Цитировать Здравствуйте. Помогите пожалуйста.
Есть файл C:\archive\1.txt в котором присутствует следующая строка: Ended : 22 апреля 2021 г. 14:05:46 Есть bat-файл set stroka=findstr "Ended" D:\archive\1.txt if /i -%stroka%==-"Ended*" echo "SuschestvuetEnded" > D:\archive\SuschestvuetEnded.txt ELSE D:\archive\NeSuschestvuetEnded.txt Появляется ошибка "Ended" was unexpected at this time. Пробовал вот так set stroka=findstr "Ended" D:\archive\1.txt if /i -%stroka% NEQ -"*" echo "SuschestvuetEnded" > D:\archive\SuschestvuetEnded.txt ELSE D:\archive\NeSuschestvuetEnded.txt Все равно появляется ошибка "Ended" was unexpected at this time. Попробовал чуть-чуть переделать bat-файл set stroka=findstr "Ended" D:\archive\1.txt set stroka2=for /f "tokens=1" %i in ('%stroka%') do @echo %i > D:\archive\%i.txt rem в предыдущей строке я хотел, чтобы в имени файла было значение переменной, то есть, в данном случае - слово Ended rem но, в дальнейшем, при наборе команды %stroka2% создается файл %i.txt вместо Ended.txt Скажите пожалуйста, что я не правильно делаю при сравнении строк? Прокомментируйте пожалуйста каждый из трех вариантов. Укажите пожалуйста на ошибки в каждом из трех примеров. |
|
Отправлено: 09:36, 25-04-2021 |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 13:16, 29-04-2021 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать epoddubniy, Вы определитесь, что Вам надо: присвоить переменной stroka значение Ended, если в файле присутствует это слово, и нечто другое (например, сделать ее пустой) в противном случае?
@Echo Off cls Set "FileIn=Z:\Box_In\1.txt" Set "KeyWord=Ended" Set "stroka=" >nul FindStr /I /C:"%KeyWord%" "%FileIn%" && Set "stroka=%KeyWord%" If "%stroka%"=="%KeyWord%" (Echo Ravno) Else (Echo Ne ravno) pause Exit /B |
------- Последний раз редактировалось megaloman, 29-04-2021 в 15:44. Отправлено: 15:34, 29-04-2021 | #12 |
Пользователь Сообщения: 105
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
chcp 65001 set stroka=findstr "Ended" D:\archive\1.txt :povtor for /f "tokens=1" %i in ('%stroka%') do @if "%i"=="Ended" (del D:\archive\1.txt & call D:\archive\Otkliu4enieDiska) else goto :povtor если условие @if "%i"=="Ended" не выполнится, подождать N сек и повторить процедуру: for /f "tokens=1" %i in ('%stroka%') do.... - снова Цитата DJ Mogarych:
Цитата megaloman:
Цитата megaloman:
|
||||
Отправлено: 15:45, 29-04-2021 | #13 |
Ветеран Сообщения: 2708
|
Профиль | Отправить PM | Цитировать epoddubniy,
Цикл с ожиданием
@Echo Off cls Set "FileIn=Z:\Box_In\1.txt" Set "KeyWord=Ended" Set /A Wait=3 Set "stroka=" :Begin >nul FindStr /I /C:"%KeyWord%" "%FileIn%" && (Set "stroka=%KeyWord%" &GoTo :End) TimeOut /T %Wait% GoTo :Begin :End Echo "%stroka%" pause Exit /B При такой постановке Вам вообще не нужна переменная stroka
@Echo Off cls Set "FileIn=Z:\Box_In\1.txt" Set "KeyWord=Ended" Set /A Wait=3 :Begin >nul FindStr /I /C:"%KeyWord%" "%FileIn%" && GoTo :End TimeOut /T %Wait% GoTo :Begin :End Echo "%KeyWord%" pause Exit /B |
------- Отправлено: 16:14, 29-04-2021 | #14 |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать Цитата epoddubniy:
Powershell уже 15 лет как существует. |
|
------- Отправлено: 16:22, 29-04-2021 | #15 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать Цитата epoddubniy:
|
|
Отправлено: 18:49, 29-04-2021 | #16 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать DJ Mogarych, есть подводные камни в виде плохой переносимости по версиям.
|
Отправлено: 21:40, 29-04-2021 | #17 |
Пользователь Сообщения: 105
|
Профиль | Отправить PM | Цитировать ВСЕМ СПАСИБО БОЛЬШОЕ ЗА ПОМОЩЬ!
|
Отправлено: 20:19, 01-05-2021 | #18 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - [решено] Сравнение строк, а где Like? | rudimko | Скриптовые языки администрирования Windows | 12 | 08-09-2014 11:34 | |
Сравнение строк в php | dimona55 | Вебмастеру | 3 | 20-01-2014 20:21 | |
CMD/BAT - [решено] Сравнение строк с переменной и добавление в случае отсутствия | zion87 | Скриптовые языки администрирования Windows | 2 | 04-01-2013 15:08 | |
сравнение двух массивов строк в Си | bool | Программирование и базы данных | 5 | 04-05-2005 17:04 | |
Сравнение строк в PHP | Dutchman Mihel | Вебмастеру | 8 | 06-07-2004 13:04 |
|