Чтение строк с пробелами из файла с помощью пакета
Я пытаюсь прочитать каждую строку из текстового файла, используя пакет.
Строки внутри файла имеют пробелы, так что это пример ввода:
This is the first line
This is the second line
...
Я использую следующий исходный код
FOR /f %%a in ("%1") do (
@echo %%a
)
goto:eof
Результат следующий:
This
This
...
Я прочитал следующую запись в переполнении стека, но это не решает мою проблему. Пакетное: чтение строк из файла с пробелами в пути
3 ответа
Попробуй это.
FOR /f "tokens=* delims=," %%a in ('type "%1"') do (
@echo %%a
)
Бали С и Генри Гао юбка вокруг вопроса.
Ваш код завершает значение в первом месте, потому что FOR /F предназначен для анализа строки в токены с разделителями. Разделителями по умолчанию являются пробел и табуляция. Вы можете сохранить всю строку, установив DELIMS в ноль.
for /f "usebackq delims=" %%a in ("%~1") do echo %%a
Но есть и потенциальные проблемы: цикл FOR /F пропускает пустые строки, а также пропускает строки, начинающиеся с символа EOL (;
по умолчанию).
Команда FOR (особенно вариант FOR /F) - сложный зверь. Я рекомендую прочитать http://judago.webs.com/batchforloops.htm чтобы получить хорошее представление о закоулках команды FOR.
Вам нужно установить разделитель для того, где партия читает до каждой строки
FOR /f "delims=;" %%a in ("%1") do (
@echo %%a
)
Разделителем по умолчанию для конца строки является точка с запятой. В качестве альтернативы используйте символ, который вы вряд ли увидите в файле, например ~
или же ¬
или что-то.