Windows-Befehl

Windows-Befehl

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 varExt
  • erstellt dann eine Variable, removedie 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 removedurch nichts ersetzt und die Erweiterung erneut anwendet

verwandte Informationen