DOS-batch-Befehl zum Lesen von ein paar Infos von text-Datei
Ich versuche, einige Informationen zu Lesen aus einer text-Datei mithilfe der windows-Befehlszeile, und speichern Sie es auf eine variable wie "set info =1234"
Unten ist der Inhalt der txt-Datei, eigentlich muss ich nur die Revisionsnummer, und die Lage ist es immer die gleiche Zeile 5, und Spalte von 11 bis 15. In der Beispiel-es ist 1234, und ich Frage mich, gibt es eine Möglichkeit, es zu speichern, um eine variable in der Dos-Befehlszeile.
Vielen Dank!
svninfo.txt:
Path: .
URL: https://www.abc.com
Repository Root: https://www.abc.com/svn
Repository UUID: 12345678-8b61-fa43-97dc-123456789
Revision: 1234
Node Kind: directory
Schedule: normal
Last Changed Author: abc
Last Changed Rev: 1234
Last Changed Date: 2010-04-01 18:19:54 -0700 (Thu, 01 Apr 2010)
InformationsquelleAutor Ray | 2010-04-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist eine one-line-version:
Zu ergänzen: Sie sollten wahrscheinlich verwenden Sie einen regulären Ausdruck entspricht und den Anker der
Revision:
Zeichenfolge am Anfang der Zeile. Du wirst nie wissen ob es nicht vielleicht angezeigt, auch an anderen Orten 🙂will Sie zu verwenden
fidnstr /R
zu aktivieren regex.InformationsquelleAutor shf301
Folgende code-snippet zeigt, wie dies zu tun:
Seine Ausgabe ist
1234
wie gewünscht.Den
setlocal
ist, was ich in jedem Skript, um sicherzustellen Variablen behandelt werden, die in einer bekannten Art und Weise. Diefor
- Anweisung verarbeitet jede Zeile in der input-Datei (diedelims
bit-Haltestellen der Linie von tokenised in einzelne Worte).Den
!line:~
bits sind Zeichenketten mit!line:~0,10!
werden die ersten zehn Zeichen und!line:~10!
als der rest.Also, im Grunde, Sie prüft jede Zeile, um zu sehen, wenn es beginnt mit
"Revision: "
und, wenn ja, Extrakte der rest der Zeile für später.Würde ich persönlich gehe mit der
findstr
Variante, obwohl. Macht die Absicht deutlich schärfer und ist ein wenig kürzer, da Sie nicht haben, um zu überprüfen, der Anfang der Zeile mit Teilstrings.Es ist schon eine Weile her, aber IIRC habe ich gerne
@SETLOCAL
auf die erste Zeile, also die@ECHO OFF
hat keinen Einfluss auf die echo-Einstellung des aufrufenden Skripts. Ich mag auch ersetzen die@ECHO OFF
mit@IF NOT DEFINED _ECHO ECHO OFF
, so kann ich mitSET _ECHO=1
zum Debuggen von meinen Skripten.InformationsquelleAutor paxdiablo
Verwenden Sie die
for
Befehl analysiert die Datei:Kurz, ja, aber paxdiablo ' s version ist wahrscheinlich die bessere Wahl, da es eigentlich die Daten überprüft, es ist wieder für Konformität, anstatt nur unter Berufung auf eine Zeilennummer.
InformationsquelleAutor Dan Story
wenn Sie können die GNU tools verwenden, wie gawk
InformationsquelleAutor ghostdog74
Wissen, wie Sie mit CMD-scripting geschickt ist toll, aber mit Hilfe der PowerShell ist sogar noch besser. Hier ist ein Weg, es zu tun:
Was ist Los?
$revision
ist eine variablegc
istGet-Content
akatype
. Jede Zeile in der Datei wird eine Zeichenfolge in eine Sequenz (pipeline).?
istWhere-Object
. Es filtert die Objekte in einer pipeline basierend auf einer Bedingung.{}
grenzt ein Skript block$_
ist das aktuelle Objekt in der pipeline.-split
ruftString.Split()
.NET, geben Sie ein array von Objekten[1]
Indizes in dem arrayInformationsquelleAutor Jay Bazuzi