Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Ошибка при выполнении батника

Ответить
Настройки темы
CMD/BAT - [решено] Ошибка при выполнении батника

Пользователь


Сообщения: 116
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: Darkar25
Дата: 08-09-2017
Изображения
Тип файла: png Screenshot_99.png
(24.9 Kb, 14 просмотров)
Тип файла: png Screenshot_100.png
(41.1 Kb, 14 просмотров)
При выполнении батника возникает ошибка:Непредвиденное появление: "...я пытался убрать этот символ...как и ожидалось ничего хорошего из этого не вышло...батник начал просто закрываться...
суть проблемы ниже...это отдельный батник где я тестировал скрипт помещения определенной строки в переменную и проверки её на наличие вопроса...систему вывода ответа не буду прикреплять ибо она не относится к теме...
Суть батника:попытка написать батник который "Отвечает" на вопросы
Проблема:Описана выше
Батник:
Код: Выделить весь код
@echo off
set num=-1
set/p "Question="
:start1
set num+=1
for /f "delims= skip=%num%" %%i in (123.txt) do (
 set STR=%%i
 echo %STR% |findstr /C:%Question% >nul &&echo Yes ||goto start1
)

:exitFor
echo %STR%
pause
Скриншоты:

Отправлено: 19:08, 08-09-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Darkar25:
Батник: »
Обрамляйте код тэгом «code». И лишь затем, если код слишком велик, его можно обернуть и в «spoiler».

Примерно так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set /a num = -1
set /p Question=

:Repeat
set /a num += 1

for /f "delims= skip=%num%" %%i in ("123.txt") do (
	set STR=%%i
	echo !STR! | >nul findstr.exe /с:%Question% && echo Yes || goto :Repeat
)

echo %STR%

endlocal
exit /b 0

Поскольку проверять не на чем — не проверялось. Но толку в таком виде всё равно не будет: Вы не можете указывать «skip=0». Именно отсюда ошибка:
Код: Выделить весь код
Непредвиденное появление: ".

Отправлено: 20:39, 08-09-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 116
Благодарности: 1

Профиль | Отправить PM | Цитировать


хорошо,ошибка пропала...но появилась новая проблема...теперь не высвечивается проверка работоспособности скрипта...т.е.не высвечивается переменная которая должна была задаться...точнее...она высвечивается но не меняется...я добавил одну строчку в батник...строчка выставляет переменную STR на 0...во время того как должна высветиться проверочная строка с уже нужной строкой высвечивается 0...есть возможные варианты решения проблемы?
дополнение:вывел проверку строки на наличие введенного текста за пределы скрипта поиска строки и мне начало спамить в командную строку данное сообщение:
Ошибка в командной строке
/c пропускается
дополнение:я ЧАСТИЧНО(переменная всё еще не меняется) решил эту проблему...заменив маленькую(предположительно русскую) с на большую англ C и эта ошибка пропала...но теперь он не ищет текст...просто стоит пустая строка и всё...атрибут UseBackQ частично решает эту проблему...но теперь считывается только последняя строка...и если не ввести текст который содержит строка то оно будет вечно крутить по кругу эту строку
-------
короче...вот вам описание моей ситуации...:
было 33 весёлых бага программист пофиксил 1 баг стало 133 весёлых бага

Последний раз редактировалось Darkar25, 08-09-2017 в 23:03.


Отправлено: 20:54, 08-09-2017 | #3


Пользователь


Сообщения: 116
Благодарности: 1

Профиль | Отправить PM | Цитировать


Проблема решена!Финальный код:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set /a "NUM=0"
set /a "STR=0"
set /p "Question="

:Repeat
set /a NUM+=1
set /a c=0
for /f "UseBackQ Delims=" %%A IN ("123.txt") do (
  set /a c+=1
  if !c!==%NUM% set "STR=%%A"
)
echo.!STR!
echo.!STR! | >nul findstr.exe /C:%Question% && echo Yes || goto :Repeat

endlocal
pause
exit /b 0

Отправлено: 23:23, 08-09-2017 | #4


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Darkar25,
когда-то чтобы обойти
Цитата Iska:
Вы не можете указывать «skip=0» »
(а бывает, действительно, что условие переменной задается чем-то извне)
придумал сделать так:
Код: Выделить весь код
@echo off
set n=0
:: Пропустить одну строку
:: set n=1
if %n% gtr 0 set "x=skip=%n%"
for /f "%x% usebackq delims=" %%a in ("file.txt") do echo %%a
pause

Отправлено: 01:02, 09-09-2017 | #5


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


alpap, можно «more +N», тут «0» допустим.

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:37, 09-09-2017 | #6


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Iska,
как раз именно так и поступал в дальнейшем, так короче, а поначалу что в голову пришло, то и использовал, но тоже вариант.

Отправлено: 05:23, 09-09-2017 | #7


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


alpap, я, кстати, когда-то наступал ровно на те же грабли с вариантом skip=0.

Отправлено: 09:10, 09-09-2017 | #8


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Darkar25,
кстати
Цитата Darkar25:
Финальный код: »
ой ли!

например, кусок из вашего кода (он именно так у вас записан, я просто сократил):
Код: Выделить весь код
@echo off
set /p "Question="
echo %Question%|findstr.exe /C:%Question%
pause
теперь попробуйте ввести при запросе сначала
[Текст_без_пробела]
а второй раз
[Текст с пробелом]
думаю будет неожиданно.

Отправлено: 18:36, 09-09-2017 | #9


Пользователь


Сообщения: 116
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата alpap:
Darkar25,
кстати
Цитата Darkar25:
Финальный код: »
ой ли!
например, кусок из вашего кода (он именно так у вас записан, я просто сократил):
Код:
@echo off
set /p "Question="
echo %Question%|findstr.exe /C:%Question%
pause
теперь попробуйте ввести при запросе сначала
[Текст_без_пробела]
а второй раз
[Текст с пробелом]
думаю будет неожиданно. »
ну...да...есть такое...уже есть соседняя тема)))
http://forum.oszone.net/thread-329656.html
заметил эту проблему когда писал бд для батника а не когда вы это сообщение написали)))

Отправлено: 21:43, 09-09-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Ошибка при выполнении батника

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Ошибка при выполнении приложения-сервера .ExeRun Microsoft Windows 7 7 22-11-2016 16:27
Разное - Ошибка при выполнении sfc /scannow vbswan Хочу все знать 5 11-08-2015 20:47
V. 2010 - Ошибка при обновлении Exchange 2010 "Произошла ошибка при выполнении 'ldifde.exe' kudrik_tt Microsoft Exchange Server 0 01-07-2014 08:07
Медиа - Ошибка при выполнении приложения-сервера при открытии мультимедийных файлов Никон_Стадник@vk Microsoft Windows 7 2 01-02-2013 11:22
Ошибка - Ошибка при выполнении cmd KvoD Microsoft Windows 2000/XP 6 26-12-2010 21:55




 
Переход