Самый короткий код командного файла Windows, чтобы получить первую строку файла, установленного в переменную? - PullRequest
18 голосов
/ 17 февраля 2011

Я ищу минимально возможный объем кода, который получит первую строку текстового файла и установит ее в качестве переменной в Windows.

Есть много примеров такого рода вещей в других темах на этом сайте StackExchange, но я не ищу, как проходить и отображать все строки в файле. То, что я хочу, это просто просто получить первую строку.

Ответы [ 6 ]

35 голосов
/ 17 февраля 2011
set /p var= <Text.txt
echo %var%

Ссылка от: http://forums.techguy.org/software-development/551867-batch-file-read-line-text.html По иронии судьбы, постер может получить первую строку, но хотел перебрать весь файл!

12 голосов
/ 02 декабря 2013

это чуть более короткая версия:

set/pz=<file
echo %z%
2 голосов
/ 17 декабря 2013

Я не мог заставить это работать под Windows 7; переменная была просто не установлена. Но вот немного более длинное решение:

for /F "delims=" %%i in (Text.txt) do (  
  set Z=%%i
  goto BREAK1
)
:BREAK1
echo %Z%
1 голос
/ 28 декабря 2016

Если отложенное расширение было включено раньше (Setlocal EnableDelayedExpansion), то существует более короткая (однострочная) версия

set /pz=<filename.txt&echo !z!
0 голосов

Мне пришлось изменить строку файла для текстового файла в каталоге Program Files(x86).После многих решений, у меня сработало следующее решение:

Шаги:

Шаг 1) используйте команду type, переданную по каналу с findstr, чтобы получить файл стребуемые данные

Шаг 2) удалить исходный файл

Шаг 3) использовать команду type, чтобы переместить содержимое обратно в файл с исходным именем файла

Шаг 4) Удалить новый файл

Пример:

@echo off
set originalFile="C:\Program Files (x86)\<Target File Path>\<Target File Name>"
set newFile="C:\Program Files (x86)\<Target File Path>\<Target newFile Name>"
if exist %originalFile% (
    type %originalFile% | findstr /v T4VSHost >> %newFile%
    del %originalFile% /F /Q
    type %newFile% >> %originalFile%
    del %newFile% /F /Q
)
@echo on

Примечание:

Когда я попытался записать изменение обратно в исходный файлна шаге 1 результатом был пустой файл.

Обратите внимание, что совпадающая строка - T4VSHost, которая встречается в файле по пути

C: \ Program Files(x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Инструменты Entity Framework \ Шаблоны \ Включает \ EF6.Utility.CS.ttinclude

0 голосов
/ 17 апреля 2018

только к вашему сведению ...

Я попробовал это и не сработало.Но я наконец понял, что мне нужно воспроизвести текстовый файл (изначально текстовый файл создается скриптом powershell), поэтому, когда я сделал это, и он работает.

:: output to different file
Type Text.txt > text2.txt

Затем примените тот же код (изменить *От 1006 * до text2.txt)

set /p var= <Text2.txt
echo %var%

Если я использую оригинал, я либо получу мусор в %var%, но не уверен, что текстовый файл не имеет <CR> или что-то еще.Во всяком случае, воспроизводя текстовый файл, кажется, работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...