Korteste Windows-batch-filkode for at få første linje af en fil indstillet til en variabel?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg leder efter den korteste mængde kode muligt, der vil få den første linje i en tekstfil og sæt den til en variabel i Windows.


Der er mange eksempler på denne slags ting i andre tråde på dette StackExchange-websted, men jeg ikke leder efter, hvordan man løber igennem og viser alle linjer i en fil. Hvad jeg vil, er at bare simpelthen få den første linje.

Bedste reference


set /p var= <Text.txt
echo \%var\%


Henvist fra: http://forums.techguy.org/software-development/551867-batch-file-read-line-text.html
Ironisk nok er plakaten i stand til at få første linie, men ønskede at løbe igennem hele filen! [18]

Andre referencer 1


dette er bare en lidt kortere version:


set/pz=<file
echo \%z\%

Andre referencer 2


Jeg kunne ikke få det til at fungere under Windows 7, variablen var simpelthen ikke indstillet. Men her er en lidt længere løsning:


for /F "delims=" \%\%i in (Text.txt) do (  
  set Z=\%\%i
  goto BREAK1
)
:BREAK1
echo \%Z\%

Andre referencer 3


Hvis forsinket udvidelse er aktiveret før (Setlocal EnableDelayedExpansion) så er der en kortere (en-liner) version


set /pz=<filename.txt&echo !z!

Andre referencer 4


Jeg måtte ændre linjen af ​​filen til en tekstfil inde i Program Files(x86) biblioteket. Efter at have forsøgt en masse løsninger fungerede følgende løsning for mig:


Steps:



  Trin 1) brug type kommandoen ledet med findstr for at hente en fil med
  ønskede data

  
  Trin 2) Slet den oprindelige fil

  
  Trin 3) brug type kommandoen til at flytte indholdet tilbage til filen med
  det oprindelige filnavn

  
  Trin 4) Slet den nye fil



Eksempel:


@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


Bemærk:


Da jeg forsøgte at skrive ændringen tilbage til den oprindelige fil i trin 1, var resultatet en tom fil.


Bemærk, at strengen jeg matcher er T4VSHost, som forekommer i filen på stien



  C: \ Programmer (x86) \ Microsoft Visual Studio
  14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Entity Framework Værktøjer \ Skabeloner \ Inkluderer \ EF6.Utility.CS.ttinclude


Andre referencer 5


bare FYI ...


Jeg prøvede det og arbejdede ikke. Men jeg indså endelig, at jeg var nødt til at reproducere tekstfilen (oprindeligt tekstfilen er genereret af et powershell script), så da jeg gjorde det, og det virker.


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


Anvend derefter den samme kode (skift text.txt til text2.txt)


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


Hvis jeg bruger den oprindelige, vil jeg enten få skrald i \%var\%, ikke sikker på om tekstfilen ikke har <CR> eller hvad. Anyway, ved at gengive tekstfilen, synes det at fungere fint.