Пакетная команда (команды) Windows для чтения первой строки из текстового файла

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

77
задан Gilles 'SO- stop being evil' 11 May 2012 в 22:01
поделиться

7 ответов

Вот пакетный файл общего назначения для печати вершины n строки из файла как утилита GNU head вместо просто одной строки.

@echo off

if [%1] == [] goto usage
if [%2] == [] goto usage

call :print_head %1 %2
goto :eof

REM
REM print_head
REM Prints the first non-blank %1 lines in the file %2.
REM
:print_head
setlocal EnableDelayedExpansion
set /a counter=0

for /f ^"usebackq^ eol^=^

^ delims^=^" %%a in (%2) do (
        if "!counter!"=="%1" goto :eof
        echo %%a
        set /a counter+=1
)

goto :eof

:usage
echo Usage: head.bat COUNT FILENAME

, Например:

Z:\>head 1 "test file.c"
; this is line 1

Z:\>head 3 "test file.c"
; this is line 1
    this is line 2
line 3 right here

Это в настоящее время не считает пустые строки. Это также подвергается ограничению длины строки пакетного файла 8 КБ.

45
ответ дан indiv 24 November 2019 в 10:44
поделиться

Вы могли бы дать этому попытку:

@echo off

for /f %%a in (sample.txt) do (
  echo %%a
  exit /b
)

редактирование Или, скажите, что Вы имеете четыре столбца данных и хотите от 5-й строки вниз к нижней части, пробуете это:

@echo off

for /f "skip=4 tokens=1-4" %%a in (junkl.txt) do (
  echo %%a %%b %%c %%d
)
10
ответ дан Chris Baker 24 November 2019 в 10:44
поделиться

Благодаря thetalkingwalnut с ответом пакетная команда (команды) Windows для чтения первой строки из текстового файла я предложил следующее решение:

@echo off
for /f "delims=" %%a in ('type sample.txt') do (
echo %%a
exit /b
)
5
ответ дан Community 24 November 2019 в 10:44
поделиться

Немного полагаясь на ответы других людей. Теперь позволяя Вам определить файл Вы хотите читать из и переменная, в которую Вы хотите результат, помещенный:

@echo off
for /f "delims=" %%x in (%2) do (
set %1=%%x
exit /b
)

Это означает, что можно использовать вышеупомянутое как это (предположение, что Вы назвали его getline.bat)

c:\> dir > test-file
c:\> getline variable test-file
c:\> set variable  
variable= Volume in drive C has no label.
3
ответ дан Ray Hayes 24 November 2019 в 10:44
поделиться

Один лайнер, полезный для stdout, перенаправляют с">":

@for /f %%i in ('type yourfile.txt') do @echo %%i & exit
3
ответ дан PabloG 24 November 2019 в 10:44
поделиться

for /f "delims=" %a in (downing.txt) do echo %a & pause>nul

Печать 1-я строка, затем ожидает пользователя для нажатия клавиши для печати следующей строки. После печати необходимых строк нажмите Ctrl+C для остановки.

@Ross Presser: Этот метод печатает строки только, не предварительно ожидают номера строки.

0
ответ дан 24 November 2019 в 10:44
поделиться

Обратите внимание, подходы к пакетному файлу будут ограничены лимитом строк для командного процессора DOS - см. Каков предел длины командной строки? .

Таким образом, при попытке обработать файл, в котором количество строк превышает 8192 символов, сценарий просто пропустит их, поскольку значение не может быть сохранено.

0
ответ дан 24 November 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: