Es ist einfacher als Sie denken :)
direkt Um die Ausgabe eines Befehls an eine Variable umleiten Sie eine for-Schleife verwenden:
for /f "tokens=1,* delims=:" %%a in ('findstr "Name" "ReadMe.txt"') do set name=%%b
werden Sie sehen, dass ich im Grunde habe deinen Befehl von oben nach dort gegeben. Beachten Sie jedoch, dass ich den /m
Schalter weggenommen habe! Um die Variable name
in Ihrem if-Block zu verwenden, benötigen Sie Delayed Variable Expansion
.
Um füge so setlocal EnableDelayedExpansion
zu Ihrem Skript (in der Regel unter @echo off
) und wo Sie eine Variable in einem geschlossenen Block von geklam- mert Änderung %varname%
zu !varname!
benötigen. Dies wird eine Ausgabe wie
Name: Here gets the Name
was bedeutet, dass sie die führende Name
sind für Sie suchen drucken
. Um auch das loszuwerden, fügen Sie eine weitere Codezeile hinzu: set name=!name:~6!
, die die ersten 6 Zeichen löscht (Name:
).
Um mögliche andere Zeichen einzuschließen und nur zu bekommen, was nach der :
ist, habe ich die Schleife geändert. Es wird nun das erste und alle anderen Token (Blöcke von Strings) erhalten, die durch :
getrennt sind und die nach dem ersten in Namen setzen.
jetzt zu befreien möglicher führende Leerzeichen zu erhalten, müssen Sie ein anderes:
for /f "tokens=* delims= " %%c in ("!name!") do set name=%%c
Die DelayedExpansion
auch hier verwendet wird!
Gesamt Skript würde wie folgt aussehen:
@echo off
setlocal EnableDelayedExpansion
findstr /m "Name" "ReadMe.txt"
if %errorlevel%==0 (
for /f "tokens=1,* delims=:" %%a in ('findstr "Name" "newfile.txt"') do set name=%%b
for /f "tokens=* delims= " %%c in ("!name!") do set name=%%c
echo !name!
)
Für Ihre weiteren Fragen Sie eine etwas bekannt Suchmaschine google Namen verwenden können.Vielleicht möchten Sie das testen :)
Sie haben ein ziemlich gutes Beispiel dafür, was zu befolgen Sie wollen, könnte Sie versuchen nun, ein Beispiel dafür zu geben, was Sie bisher getan haben. also dein Skript. – Compo