Проблема с решениями EXIT /B
, когда более реалистично внутри пакетного файла всего одна его часть, заключается в следующем. В указанном пакетном файле после EXIT /B
нет последующей обработки. Обычно в пакетах гораздо больше, чем одна ограниченная задача.
Чтобы противостоять этой проблеме:
@echo off & setlocal enableextensions enabledelayedexpansion
set myfile_=C:\_D\TEST\My test file.txt
set FirstLine=
for /f "delims=" %%i in ('type "%myfile_%"') do (
if not defined FirstLine set FirstLine=%%i)
echo FirstLine=%FirstLine%
endlocal & goto :EOF
(Тем не менее, так называемые ядовитые персонажи все еще будут проблемой.)
Подробнее о получении определенной строки с помощью пакетных команд:
Как мне получить n-ю, первую и последнюю строку текстового файла? "
http://www.netikka.net/tsneti/info/tscmd023.htm
[Добавлено 28 августа 2012 года] Можно также иметь:
@echo off & setlocal enableextensions
set myfile_=C:\_D\TEST\My test file.txt
for /f "tokens=* delims=" %%a in (
'type "%myfile_%"') do (
set FirstLine=%%a& goto _ExitForLoop)
:_ExitForLoop
echo FirstLine=%FirstLine%
endlocal & goto :EOF