
Sie müssen den letzten Unterstrich in einem Dateinamen finden und alles entfernen, was darauf folgt (einschließlich des letzten Unterstrichs).
zB Dateiname:
abc_erf_dsgd_fd12458.txt
erwartetes Ergebnis:
abc_erf_dsgd.txt
Hinweis: Die Anzahl der im Dateinamen erscheinenden Unterstriche ist dynamisch und nicht festgelegt.
Bestimmte Dateien haben möglicherweise nur zwei Unterstriche, während andere bis zu sechs haben können.
Ziel ist es hier, den letzten Unterstrich herauszufinden und alles Folgende wegzulassen.
Am besten wäre ein Windows-Batchskript, das den Zweck erfüllt, und keine Powershell-Befehle.
Antwort1
@Echo off
set file=abc_erf_dsgd_fd12458.txt
for %%A in (%file%) do set Ext=%%~xA
set remove=%file%
:loop
if "%remove%" neq "%remove:*_=%" Set "remove=%remove:*_=%"&goto :loop
call set filenew=%%file:_%remove%=%%%Ext%"
set file
Beispielausgabe:
> SU_1220967.cmd
file=abc_erf_dsgd_fd12458.txt
filenew=abc_erf_dsgd.txt"
Der Stapel
- erhält zuerst die Erweiterung in var
Ext
- erstellt dann eine Variable,
remove
die den Rest des Dateinamens enthält, nachdem in einer Schleife mittels Zeichenfolgenersetzung der gesamte Text bis einschließlich des Unterstrichs entfernt wurde. - erstellt den neuen Dateinamen, indem es
remove
durch nichts ersetzt und die Erweiterung erneut anwendet