Команда find
ожидает, что второй параметр будет путь к файлу, а не буквальная строка, поэтому вы не можете сделать find """" !line!
, чтобы найти литерал "
в строке, представленной !line!
. Для поиска строки вам нужно будет использовать канал (|
) :
echo(!line!| find """" && (echo Found quotes.) || (echo No quotes found.)
Экранирование литерала "
на ""
является правильным, но это специально для команды find
.
В любом случае, возможно, нет необходимости использовать find
с конвейером, что довольно медленно и может вызвать проблемы, когда дело доходит до специальных символов. Поскольку поля, содержащие запятые или кавычки, должны быть заключены в кавычки в соответствии со спецификацией формата CSV , вы можете просто позаботиться об окружающих кавычках, как в следующем примере.
Если ни одно поле не пустое ( поэтому рядом не появляется ,
) и перед 7-м полем, содержащим ,
, нет поля (в кавычках), установите параметры tokens
и delims
для for /F
l oop чтобы получить седьмое поле. Затем вы можете использовать ~
-модификатор метапеременной for
, чтобы удалить окружающие или ведущие "
и сравнить результат с простой метапеременной:
@echo off
for /F "usebackq tokens=7 delims=, eol=," %%a in ("test.csv") do (
if not "%%~a"=="%%a" echo The 7th field is quoted: %%a
)