Ich bin jetzt neu mit Skripten, aber ich finde es wirklich schwierig, den Befehl "für" zu verstehen (besonders mit diesen Token und Trennzeichen usw.). Wenn ich es so sage, denke ich, dass das Kommando dazu verwendet werden kann, was ich tue. Wenn es nicht einfacher ist und es einen einfacheren Weg gibt, ignoriere meine Ignoranz :(
Angenommen, ich habe mehrere Zeilen in einer Textdatei abc.txt, wobei jede Zeile mit "(Anführungszeichen) beginnt und endet. Z.B. eine Datei mit 3 Zeilen
"hey what is going on @mike220. I am working on your car. Its engine is in very bad condition"
"Because if you knew, you'd get shredded and do it with certainty"
"@honey220 Do you know someone who has busted their ass on a diet only for results to come to a screeching halt after a few weeks"
Wie kann ich jede Zeile innerhalb der Anführungszeichen auf eine feste Länge zuschneiden, z. B. 30, 50 oder 100 Zeichen (einschließlich Leerzeichen) Ich möchte die Anzahl der Zeichen im Stapel eingeben und es kann entsprechend beschneiden und eine Datei def.txt mit abgeschnittenen Zeilen in Anführungszeichen erstellen.
Angenommen, ich gebe 50 ein, sollten die Ergebnisse des obigen Beispiels sein
"hey what is going on @mike220. I am working on you"
"Because if you knew, you'd get shredded and do it"
"@honey220 Do you know someone who has busted their"
Vielen Dank
P.S. Wenn Sie den Befehl "Befehl" verwenden, erläutern Sie den Befehl bitte.
BEARBEITEN: Obwohl die Antwort funktioniert hat, gibt es ein Problem mit nicht-englischen Texten. Ich bekomme verstümmelten Text in Ausgabedatei für nicht englischen Text in Eingabedatei. Jede Hilfe @barlop Hier ist der nicht englische Text (1 Zeile)
"फाइल है इसको ना पढ़े आपको कोई मतलांब नही"
quelle
for
Aber fragen Sie dann nach einem Befehl, um Zeichen zu trimmen. Zeigen Sie uns vielleicht, was Sie bisher haben und wo Sie feststecken.for /f %f in (a.txt) do @(set a=%f & echo !a:~0,3!)
obwohl noch nicht da .. aber es gibt die ersten 3 Zeichen von jeder Zeile. Diese Variante trimmt einige Zeichen abfor /f %f in (a.txt) do @(set a=%f & echo !a:~1,-2!)
Antworten:
Das macht es
Also, in Ihrem Beispiel, das ist in einem.text Jede Zeile beginnt also mit einem Anführungszeichen, und es gibt auch Leerzeichen, obwohl es auch funktioniert, wenn keine Leerzeichen vorhanden sind.
Und das Batch-Skript ausführen
Ich habe jetzt zwei Zeilen hinzugefügt, damit sie in eine Datei def.txt ausgegeben werden
for
Anweisungen in cmd sind etwas kompliziert. Um dies zu verstehen, beginnen Sie einfach mit dem Versuch, eine for-Anweisung zu schreiben, die jede Zeile einer Datei druckt, ohne sie zu beschneiden, und verwenden Sie eine einfache Datei wie eine mit zwei Zeilen abcdefg und hijklmn. Dann diese zur Aussagefor /f %f in (a.txt) do @echo %f
dann baust du es auf. Aber hier fangen Sie an, wenn Sie herausfinden wollen, wie es geht. Sobald Sie das haben, fügen Sie "delims =" hinzu, um zu sehen, welchen Effekt es hat (möglicherweise benötigen Sie einige Leerzeichen in den Zeilen der Datei, um den Effekt zu sehen). Dann schauen Sie sich an, wie Sie einen Teilstring im Stapel erhalten können. set a = abcdefg echo% a: ~ 0,2% (druckt ab).quelle
for
oderif
kann lustig sein, und wenn das passiert, muss man A) diese Zeile habensetlocal enableextensions enabledelayedexpansion
und B) verwende! var! anstelle von% var% Und wenn Sie Dinge nur in cmd.exe ausführen und wollen! var! zu arbeiten musst du tuncmd /v:on
dann kannst du echo! var!