Ich benutze Windows 10 Pro mit Batch-Dateien (offen für die Verwendung von VBS und PS1-Dateien) und ich habe eine Textdatei automatisch von Software exportiert, die aussehen kann dies:Batch Trim Linien in Textdatei nach Sub-String - REM Trim mit Erweiterung
Sub_Group691_FE7IP11_2017-12-12.sldasm_bin/parts/Loft-Project.sldasm_bin/parts/Loft-Project...
Sub_Group691_FE7IP12_2017-12-12.sldasm_bin/parts/Loft-Project.sldasm_bin/parts/Loft-Project...
Sub_Group691_FE7IP13_2017-12-12.sldasm_bin/parts/Loft-Project.sldasm_bin/parts/Loft-Project...
Jede Zeile setzt sich nach den Unterteilen Angabe „...“ und enthalten ‚Gift‘ Zeichen könnte. Der Sub_Group-Teil wird aus dem Dateinamen gezogen und kann auch "Gift" -Zeichen enthalten.
Was ich zu tun suche ist, exportieren Sie nur den Dateinamen, der direkt am Anfang jeder Zeile ist, bis zu und einschließlich der ersten Dateierweiterung, in diesem Fall ".sldasm." Alles auf der rechten Seite der ersten Instanz von .sldasm sollte getrimmt werden.
Was ich bisher gemeinsam auf Stackoverflow aus der Forschung gepflasterten habe, ist:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "inputfile=C:\Scratch\ASMExport.txt"
SET "outputfile=C:\Scratch\InputFiles.txt"
(
FOR /f "usebackqdelims=" %%a IN ("%inputfile%") DO (
SET "currentline=%%a"
ECHO("!currentline:.sldasm=.sldasm & rem "!"
)
)>"%outputfile%"
GOTO :EOF
Mein Problem mit der „rem“ Linie liegt, die scheint nicht wie beabsichtigt zu funktionieren, weil die FOR-Schleife innerhalb eines Wesens oder weil eine verzögerte Erweiterung aktiviert werden muss. Es scheint, den "& rem" als Text zu analysieren, der dafür zu sein scheint, weil die verzögerte Expansion funktioniert. Was ich aus den obigen Zeilen bekommen ist:
SubGroup691_FE7IP11_2017-12-12.sldasm" & rem "/bin/parts/Loft-Project.sldasm" & rem ""
SubGroup691_FE7IP12_2017-12-12.sldasm" & rem "/bin/parts/Loft-Project.sldasm" & rem ""
SubGroup691_FE7IP13_2017-12-12.sldasm" & rem "/bin/parts/Loft-Project.sldasm" & rem ""
ich diese gleiche Linie außerhalb der Schleife verwenden können, und ohne ENABLEDELAYEDEXPANSION wie folgt aus:
@ECHO OFF
SETLOCAL
SET "inputstring=Sub_Group691_FE7IP11_2017-12-12.sldasm_bin/parts/Loft-Project.sldasm_bin/parts/Loft-Project"
SET "outputstring=%inputstring:.sldasm=.sldasm & rem "%"
echo %outputstring%
Die Ausgabe an das würde mir geben, was ich suche :
Sub_Group691_FE7IP11_2017-12-12.sldasm
in Suche, beginne ich, dass rem zu denken, kann unter Verwendung eines falschen Trennzeichen nicht auf diese Weise verwendet werden, und ich muss zu einem Token-Trennzeichen Schleife zu bewegen.
Ich würde mich damit begnügen, dies zum Laufen zu bringen und mich nicht um "Gift" -Zeichen im Dateinamen zu sorgen, indem ich eifrig darum sorge, Dateien richtig zu benennen.
Vielen Dank für Ihre Hilfe!
Vielen Dank für die Erklärung zur verzögerten Erweiterung, es war wirklich hilfreich! Ihr Beispiel ist genau das, was ich gesucht habe, und führte ein neues Konzept für mich ein (Ersetzen der Suchzeichenfolge durch ein verbotenes Zeichen). Das ist über den Tellerrand hinaus gedacht. Ihr Jungs (und Mädels) seid fantastisch! Nochmals vielen Dank, aschipfl! – embWalker