Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Получить из файла значение только пятой строки. (http://forum.oszone.net/showthread.php?t=343163)

NickGrava 04-12-2019 11:04 2899021

Получить из файла значение только пятой строки.
 
Всем доброго времени суток!

Помогите с задачкой одной. Необходимо с помощью батника получить значение пятой строки в файле. И вывести его на экран.

Как это можно сделать?
заранее спасибо!

DJ Mogarych 04-12-2019 12:07 2899028

Код:

powershell -command "(gc D:\temp\filelist.txt)[4]"
О, а вот так будет работать быстрее:
Код:

powershell -command "gc D:\temp\filelist.txt -first 5 |select -last 1"

NickGrava 04-12-2019 14:29 2899045

C powershell вариант мне известен... спасибо! но вот хотелось бы такое же но с помощью батника.

DJ Mogarych 04-12-2019 15:34 2899053

Это код для батника.

megaloman 04-12-2019 17:13 2899060

Код:

@Echo Off
cls
        Set "FileIn=Z:\Box_In\Fi Le.txt"
        Set /A N=5

        Set /A N-=1
        For /F "usebackq delims=" %%f In (`2^>nul More +%N% "%FileIn%"`) Do Set "NStr=%%f" &GoTo :Continue
        :Continue
        Echo "%NStr%"
pause
Exit /B 0


Iska 04-12-2019 21:22 2899083

И skip же ещё (если первые строки не пустые).

megaloman 04-12-2019 21:58 2899090

Цитата:

Цитата Iska
И skip же ещё (если первые строки не пустые). »

Iska, more /? :) Скип никак не нужен. Неприятность - если выводимая строка пустая. А скип при пустых строках не спасает.
А вот вариант, переменная при искомой пустой строке будет правильная, фантазия привела к наиболее оптимальному варианту
Код:

@Echo Off
cls
        Set "FileIn=Z:\Box_In\Fi Le.txt"
        Set /A N=5

        For /F "usebackq tokens=1* delims=:" %%i In (`2^>nul FINDSTR /R /C:".*" /N "%FileIn%"`) Do If "%%i"=="%N%" Set "NStr=%%j"
        Echo "%NStr%"
pause
Exit /B 0

Или, вот еще одно циничное извращение
Код:

@Echo Off
cls
        Set "FileIn=Z:\Box_In\Fi Le.txt"

        For /F "usebackq tokens=1* delims=:" %%i In (`2^>nul FINDSTR /R /C:".*" /N "%FileIn%"`) Do Call Set "NStr%%i=%%j"
        Echo "%NStr5%"
pause
Exit /B 0

Получай строку какую хочется

alpap 04-12-2019 23:42 2899100

подкину и я:
1.
Код:

@echo off
<"file.txt" (more +4|set /p x=^& call echo %%x%%)
pause

2.
Код:

@echo off
<"file.txt" (for /f "tokens=2 delims=[]" %%a in ('find /n /v ""^|find "[5]"') do @echo:%%a)
pause


Iska 05-12-2019 05:39 2899104

Цитата:

Цитата megaloman
Iska, more /? »

Не, ну, more Вы уже сделали же :).


Время: 01:09.

Время: 01:09.
© OSzone.net 2001-