Kortste Windows batch-bestand code om eerste regel van een bestand instellen van een variabele?

Ik ben op zoek naar de kortste hoeveelheid code mogelijk dat de eerste regel van een tekstbestand en zet deze om in een variabele in Windows.

Er zijn tal van voorbeelden van dit soort dingen in andere threads op dit StackExchange site, maar ik ben niet op zoek naar hoe te doorlopen en weergeven van alle regels in een bestand. Wat ik wil is gewoon gewoon voor de eerste lijn.

InformationsquelleAutor djangofan | 2011-02-16

 

6 Replies
  1. 36
    set /p var= <Text.txt
    echo %var%
    

    Waarnaar wordt verwezen vanaf: http://forums.techguy.org/software-development/551867-batch-file-read-line-text.html
    Ironisch genoeg is de poster in staat is om de eerste lijn, maar wilde lus door het hele bestand!

    • werkt goed, maar je moet het verwijderen van de ruimte tussen de = en < anders wordt uw variabele heeft een spatie als eerste karakter (Dit is hoe het eruit moet zien: set /p var=<Text.txt )
    • Ik probeerde gewoon wat je voorgesteld vs wat is er in het antwoord en is er geen verschil draait op win7. De enige manier die ik kan krijgen ruimtes is door daadwerkelijk in te zetten in de Text.txt -bestand. Heb je getest uw suggestie?
    • Het krijgt alleen de eerste regel van het bestand
    • probeer het opnieuw lezen van de vraag, vooral het deel van de eerste zin dat sprake is van “eerste regel van het bestand”
    • Ja, maar door het verwijderen van de ruimte, haar dichter bij mijn verzoek om “zo snel mogelijk” manier, toch?
    • ja, je hebt gelijk en gaan met de stroom hier, u kunt ook afscheren 2 tekens uit het hebben van een enkele char variabele 😉
    • de hoogte van dit te laat is, maar geen noodzaak voor de spatie vóór de slash

  2. 12

    dit is gewoon een iets kortere versie:

    set/pz=<file
    echo %z%
    
    • Ja, ik geverifieerd. Het werkt perfect door het verwijderen van de 2 ruimtes. Mooi antwoord. Ik veronderstel dat het verdient een groen vinkje maar omdat dit bijna 3 jaar later, ben ik niet gaan. Ik hoop alleen dat mensen u geven-merken in het herkennen van uw bijdrage.
    • dank u voor het controleren ervan. ik hoop dat het kan helpen om iemand op een dag, dus ik postte het.
  3. 2

    Kon ik niet krijgen dit om te werken onder Windows 7; de variabele is gewoon niet ingesteld. Maar hier is een iets langer oplossing:

    for /F "delims=" %%i in (Text.txt) do (  
      set Z=%%i
      goto BREAK1
    )
    :BREAK1
    echo %Z%
    
    • Dit mislukt wanneer de eerste regel leeg is of begint met een ; en het is lastig te behandelen als vertraagde uitbreiding is ingeschakeld
  4. 1

    Als vertraagde uitbreiding is ingeschakeld voordat (Setlocal EnableDelayedExpansion) dan is er een kortere (one-liner) versie

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

    Moest ik de lijn van het bestand voor een tekstbestand in Program Files(x86) directory. Na het proberen van een heleboel oplossingen, is de volgende oplossing werkte voor mij:

    Stappen:

    Stap 1) gebruik type opdracht doorgesluisd met findstrom een bestand te krijgen met de
    gewenste gegevens

    Stap 2) verwijder het originele bestand

    Stap 3) gebruik type commando om de inhoud verplaatsen naar het bestand met
    de oorspronkelijke bestandsnaam

    Stap 4) Verwijder het nieuwe bestand

    Voorbeeld:

    @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
    

    Opmerking:

    Toen ik probeerde het schrijven van de verandering terug naar het oorspronkelijke bestand in stap 1, het resultaat was een leeg bestand.

    Opmerking de tekenreeks ik ben matching is T4VSHost, die optreedt in de file op weg

    C:\Program Files (x86)\Microsoft Visual Studio
    14.0\Common7\IDE\Extensions\Microsoft\Entity Framework en Tools\Sjablonen\Includes\EF6.Utility.CS.ttinclude

    • Dat komt omdat verschillende coderingen. type recodes Unicode-ANSI. (batch kan alleen omgaan met de ANSI; heeft problemen met Unicode -)
  6. -1

    net FYI…

    Ik heb het geprobeerd en werkte niet. Maar ik besefte eindelijk dat ik had voor het reproduceren van de tekst-bestand (oorspronkelijk de tekst-bestand wordt gegenereerd door een powershell script) dus als dit heb ik gedaan en het werkt.

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

    Dan gelden dezelfde code (wijzigen text.txt te text2.txt)

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

    Als ik de oorspronkelijke, ik zou er rommel in %var%, niet zeker of het tekst bestand is niet <CR> of wat. Hoe dan ook, door het weergeven van de tekst-bestand, lijkt het werkt prima.

    • Dat komt omdat verschillende coderingen. type recodes Unicode-ANSI. (batch kan alleen omgaan met de ANSI; heeft problemen met Unicode, terwijl Powershell kan omgaan met zowel (er moet een schakelaar of de cmdlet om te zetten naar ANSI -)

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *