Показать полную графическую версию : Получить из файла значение только пятой строки.
NickGrava
04-12-2019, 11:04
Всем доброго времени суток!
Помогите с задачкой одной. Необходимо с помощью батника получить значение пятой строки в файле. И вывести его на экран.
Как это можно сделать?
заранее спасибо!
DJ Mogarych
04-12-2019, 12:07
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
C powershell вариант мне известен... спасибо! но вот хотелось бы такое же но с помощью батника.
DJ Mogarych
04-12-2019, 15:34
Это код для батника.
megaloman
04-12-2019, 17:13
@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
И skip же ещё (если первые строки не пустые).
megaloman
04-12-2019, 21:58
И 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
Получай строку какую хочется
подкину и я:
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, more /? »
Не, ну, more Вы уже сделали же :).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.