Dateinamen von Windows .msu Dateien kürzen [gelöst]

Deine Frage passt nicht in die anderen Bereiche, dann stelle sie hier.
Antworten
Benutzeravatar
Holgi
Guru
Guru
Beiträge: 3098
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 392 Mal
Danke erhalten: 509 Mal
Gender:

Dateinamen von Windows .msu Dateien kürzen [gelöst]

Beitrag von Holgi » 19.03.2021, 17:19

Hallo liebe Mitstreiter!
Ich benötige bei einer Batch (*.cmd) eure Hilfe:
wir haben ja von Ben dieses tolle Script, welches uns die ellenlangen Dateinamen vom Windows Update Catalog auf ein vernünftiges Maß stutzt.
z.B
windows10.0-kb5000736-x64_880844224a175033802b3d7a1f40ec304c0548dd.msu
auf
windows10.0-kb5000736-x64.msu
Das benutze ich fast täglich. Es sieht so aus:

Code: Alles auswählen

::
@echo off
color 1f
pushd %~dp0
setlocal EnableExtensions
setlocal EnableDelayedExpansion
for %%a in ("*.msu") do (
for /f "tokens=1,2 delims=_" %%a in ("%%~na") do (
ren "%%a_%%b.msu" "%%a.msu"
))
for %%a in ("*.cab") do (
for /f "tokens=1,2 delims=_" %%a in ("%%~na") do (
ren "%%a_%%b.cab" "%%a.cab"
))
for %%a in ("*.exe") do (
for /f "tokens=1,2 delims=_" %%a in ("%%~na") do (
ren "%%a_%%b.exe" "%%a.exe"
))
Leider muss ich immer dieses Script von einem Order in den anderen "schieben", wo meine Update Dateien sind (also mit Unterordnern).
Es wäre toll, wenn man sämtliche Dateien mit diesen langen Dateinamen - also auch die in Unterordnern - von diesem Script suchen und dann kürzen lassen könnte.
Es gibt da so ein Script (wohl auch von Ben?) welches ich ebenfalls gerne nutze, im bestimmte Dateien zu löschen.
Könnte man so etwas nicht verbinden? Frei nach dem Motto: durchsuche alle Ordner mit dem Namen "So-und-So inklusive seinen Unterordnern und kürze alle Dateien mit "ellenlang" die du findest auf normalmaß.
Das zweite Script sieht übrigens so aus:

Code: Alles auswählen

cd /D "%homepath%\Videos\"
FORFILES /S /M "*.txt" /C "cmd /c del @path"
FORFILES /S /M "*.bak" /C "cmd /c del @path"
FORFILES /S /M "*.ini" /C "cmd /c del @path"
FORFILES /S /M "to be deleted.exe" /C "cmd /c del @path"
For /D /r %%G in ("Backup") DO rd /s /q "%%G"
Wäre schön, wenn mir jemand bei helfen könnte. Ein dickes Dankeschön vorweg schonmal :dankeschoen:
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Tante Google

Dateinamen von Windows .msu Dateien kürzen [gelöst]

Beitrag von Tante Google » 19.03.2021, 17:19


Benutzeravatar
Ben
★ Team Blog ★
Beiträge: 1032
Registriert: 28.12.2017, 15:19
Hat sich bedankt: 47 Mal
Danke erhalten: 84 Mal
Gender:

Re: Dateinamen von Windows .msu Dateien kürzen

Beitrag von Ben » 20.03.2021, 15:11

So z.B funktioniert aber nur wenn kein Leerzeichen im Kompletten Pfad zur Datei enthalten ist.

Code: Alles auswählen

::
@echo off
color 1f
pushd %~dp0
setlocal EnableExtensions
setlocal EnableDelayedExpansion
for /f %%a in ('dir /b /s "*.msu"') do (
set "File=%%a"
for /f "tokens=1,2 delims=_" %%a in ("%%~na") do (
ren "!File!" "%%a.msu"
))
for /f %%a in ('dir /b /s "*.cab"') do (
set "File=%%a"
for /f "tokens=1,2 delims=_" %%a in ("%%~na") do (
ren "!File!" "%%a.cab"
))
for /f %%a in ('dir /b /s "*.exe"') do (
set "File=%%a"
for /f "tokens=1,2 delims=_" %%a in ("%%~na") do (
ren "!File!" "%%a.exe"
))
Und Sorry das andere habe ich ganz vergessen. :oops:

Benutzeravatar
Holgi
Guru
Guru
Beiträge: 3098
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 392 Mal
Danke erhalten: 509 Mal
Gender:

Re: Dateinamen von Windows .msu Dateien kürzen

Beitrag von Holgi » 20.03.2021, 19:58

Danke!
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Benutzeravatar
Holgi
Guru
Guru
Beiträge: 3098
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 392 Mal
Danke erhalten: 509 Mal
Gender:

Re: Dateinamen von Windows .msu Dateien kürzen

Beitrag von Holgi » 21.03.2021, 12:45

Das Script funktioniert gut; mit der von dir erwähnten Einschränkung, dass keine Leerzeichen im Dateipfad vorhanden sein dürfen.
Frage:
dem von mir erwähnten 2. Script ist es egal, ob Leerzeichen vorhanden sind. Gibt es da noch eine Stellschraube, wo man dran drehen könnte, damit es auch mit deinem Script so funktioniert?
ich meine dieses 2. Script:

Code: Alles auswählen

cd /D "%homepath%\Videos\"
FORFILES /S /M "*.txt" /C "cmd /c del @path"
FORFILES /S /M "*.bak" /C "cmd /c del @path"
FORFILES /S /M "*.ini" /C "cmd /c del @path"
FORFILES /S /M "to be deleted.exe" /C "cmd /c del @path"
For /D /r %%G in ("Backup") DO rd /s /q "%%G"
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Benutzeravatar
DK2000
Legende
Legende
Beiträge: 10012
Registriert: 03.04.2018, 00:07
Hat sich bedankt: 223 Mal
Danke erhalten: 686 Mal
Gender:

Re: Dateinamen von Windows .msu Dateien kürzen

Beitrag von DK2000 » 21.03.2021, 13:03

Versuche mal überall in den For-Schleifen, wo "dir" ausgeführt wird, noch "delims=" einzutragen, also:

Code: Alles auswählen

for /f  "delims=" %%a in ('dir /b /s "*.msu"') do (
set "File=%%a"
Dann ändert sich der Inhalt von %files% in meiner Testumgebung von z.b.

Code: Alles auswählen

D:\Working\Projects\Test\updates
D:\Working\Projects\Test\updates\Updates
D:\Working\Projects\Test\updates\Updates_1
D:\Working\Projects\Test\updates\windows10.0-kb4601554-x64-ndp48_2d34ab16fa8501aa0bd9738d1b8f76024f88d421.msu
nach

Code: Alles auswählen

DD:\Working\Projects\Test\updates
D:\Working\Projects\Test\updates\Updates 2
D:\Working\Projects\Test\updates\Updates_1
D:\Working\Projects\Test\updates\windows10.0-kb4601554-x64-ndp48_2d34ab16fa8501aa0bd9738d1b8f76024f88d421.msu
D:\Working\Projects\Test\updates\Updates 2\Updates_3
D:\Working\Projects\Test\updates\Updates 2\windows10.0-kb4601554-x64-ndp48_2d34ab16fa8501aa0bd9738d1b8f76024f88d421.msu
D:\Working\Projects\Test\updates\Updates 2\windows10.0-kb5000736-x64_880844224a175033802b3d7a1f40ec304c0548dd.msu
D:\Working\Projects\Test\updates\Updates 2\Updates_3\windows10.0-kb5000736-x64_880844224a175033802b3d7a1f40ec304c0548dd.msu
D:\Working\Projects\Test\updates\Updates_1\Windows10.0-KB5000736-x64_2468f0824ff7363a3bc1debc592096ae4c2394fd.cab
Werden also auch Verzeichnisse mit Leerzeichen erfasst. Mein Script läuft zwar etwas anders ab, aber die For-Schleife mit "dir" habe ich da genauso drin.

Benutzeravatar
Holgi
Guru
Guru
Beiträge: 3098
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 392 Mal
Danke erhalten: 509 Mal
Gender:

Re: Dateinamen von Windows .msu Dateien kürzen

Beitrag von Holgi » 21.03.2021, 13:14

nee, das hat nicht funktioniert. Schade.
Das Script sieht jetzt so aus:

Code: Alles auswählen

::
@echo off
color 1f
pushd %~dp0
setlocal EnableExtensions
setlocal EnableDelayedExpansion
for /f "delims=" %%a in ('dir /b /s "*.msu"') do (
set "File=%%a"
for /f "tokens=1,2 delims=_" %%a in ("%%~na") do (
ren "!File!" "%%a.msu"
))
for /f "delims=" %%a in ('dir /b /s "*.cab"') do (
set "File=%%a"
for /f "tokens=1,2 delims=_" %%a in ("%%~na") do (
ren "!File!" "%%a.cab"
))
for /f "delims=" %%a in ('dir /b /s "*.exe"') do (
set "File=%%a"
for /f "tokens=1,2 delims=_" %%a in ("%%~na") do (
ren "!File!" "%%a.exe"
))
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Benutzeravatar
Holgi
Guru
Guru
Beiträge: 3098
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 392 Mal
Danke erhalten: 509 Mal
Gender:

Re: Dateinamen von Windows .msu Dateien kürzen

Beitrag von Holgi » 21.03.2021, 13:23

Kommando zurück! Hat doch geklappt. Hatte es mit einem Test auf Updateplattform (KB4052623) versucht.
Die sind bei mir im Ordner "Windows Defender Antivirus-Antischadsoftwareplattform – KB4052623" und da war die Datei "updateplatform_5f44a9bbf0cd2d908433df906387fc7cbdb5dc94.exe".
Hatte vermutet, dass auch hier auf "updateplatform.exe" gekürzt wird, was aber nicht der Fall war.
Bei den anderen Updates mit langen Dateinamen hat es funktioniert.
Danke! :dankeschoen:
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Benutzeravatar
Ben
★ Team Blog ★
Beiträge: 1032
Registriert: 28.12.2017, 15:19
Hat sich bedankt: 47 Mal
Danke erhalten: 84 Mal
Gender:

Re: Dateinamen von Windows .msu Dateien kürzen

Beitrag von Ben » 21.03.2021, 14:33

DK2000 auch von mir ein Danke!
Hab ich wieder etwas gelernt. :)

Benutzeravatar
DK2000
Legende
Legende
Beiträge: 10012
Registriert: 03.04.2018, 00:07
Hat sich bedankt: 223 Mal
Danke erhalten: 686 Mal
Gender:

Re: Dateinamen von Windows .msu Dateien kürzen

Beitrag von DK2000 » 21.03.2021, 14:39

Bei mir benennt er die "updateplatform_5f44a9bbf0cd2d908433df906387fc7cbdb5dc94.exe" auch um, aber es darf sich nur ein Update davon im Ordner befinden, da ansonsten alle Dateien in "updateplatform.exe" umbenannt werden und das klappt halt nur bei der ersten Datei.

Habe da meine Script mal etwas vom Rest getrennt. Der Läuft so eigenständig, ist aber nach wie vor auf meine Verzeichnsistruktur ausgelegt.

Alle Updates befinden sich in einem Unterordner im Verzeichnis Updates. Kein Update befindet sich direkt unter Updates.

Code: Alles auswählen

echo off
cls

cd /d "%~dp0"

setlocal EnableDelayedExpansion

set UpdRoot=%~dp0

for /f  "delims=" %%d in ('dir /a:d /b /s "%UpdRoot%\Updates"') do (
	set UpdFolder=%%d
	
	if exist "!UpdFolder!\*.msu"  (
		for /f  %%f in ('dir /a:-d /b "!UpdFolder!\*.msu"') do (
		set filename=%%f
		echo "!filename!"
			for /f "tokens=2 delims=_" %%# in ("!filename!") do (
				set "new_filename=!filename:_%%~n#=!"
				ren "!UpdFolder!\!filename!" "!new_filename!"
			)
		)
	)
	
	if exist "!UpdFolder!\*.cab"  (
		for /f  %%f in ('dir /a:-d /b "!UpdFolder!\*.cab"') do (
		set filename=%%f
		echo "!filename!"
			for /f "tokens=2 delims=_" %%# in ("!filename!") do (
				set "new_filename=!filename:_%%~n#=!"
				ren "!UpdFolder!\!filename!" "!new_filename!"
			)
		)
	)
	
	if exist "!UpdFolder!\*.exe"  (
		for /f  %%f in ('dir /a:-d /b "!UpdFolder!\*.exe"') do (
		set filename=%%f
		echo "!filename!"
			for /f "tokens=2 delims=_" %%# in ("!filename!") do (
				set "new_filename=!filename:_%%~n#=!"
				ren "!UpdFolder!\!filename!" "!new_filename!"
			)
		)
	)
	
)
	
:EOF
Die Scripta habe ich da gerne bei mir in einem zentralen Verzeichnis, daher die Zeile "set UpdRoot=%~dp0". In dem Beispiel hier jetzt befindet sich das Verzeichnis "Updates" im selben Verzeichnis wie der Script und die Updates jeweils in eigenen Unterverzeichnissen in "Updates"

Das Forum fügt da ganz schön viele Leerzeichen ein.
Zuletzt geändert von DK2000 am 21.03.2021, 15:05, insgesamt 1-mal geändert.

Benutzeravatar
Holgi
Guru
Guru
Beiträge: 3098
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 392 Mal
Danke erhalten: 509 Mal
Gender:

Re: Dateinamen von Windows .msu Dateien kürzen

Beitrag von Holgi » 21.03.2021, 14:49

aber es darf sich nur ein Update davon im Ordner befinden, da ansonsten alle Dateien in "updateplatform.exe" umbenannt werden und das klappt halt nur bei der ersten Datei.
Hatte ich auch erst gedacht, aber es war/ist nur eine Updateplatform ****.exe Datei vorhanden.
Mit dem ursprünglichen Script

Code: Alles auswählen

::
@echo off
color 1f
pushd %~dp0
setlocal EnableExtensions
setlocal EnableDelayedExpansion
for %%a in ("*.msu") do (
for /f "tokens=1,2 delims=_" %%a in ("%%~na") do (
ren "%%a_%%b.msu" "%%a.msu"
))
for %%a in ("*.cab") do (
for /f "tokens=1,2 delims=_" %%a in ("%%~na") do (
ren "%%a_%%b.cab" "%%a.cab"
))
for %%a in ("*.exe") do (
for /f "tokens=1,2 delims=_" %%a in ("%%~na") do (
ren "%%a_%%b.exe" "%%a.exe"
))
im gleichen Ordner
funktioniert es. Kömisch.
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Benutzeravatar
Ben
★ Team Blog ★
Beiträge: 1032
Registriert: 28.12.2017, 15:19
Hat sich bedankt: 47 Mal
Danke erhalten: 84 Mal
Gender:

Re: Dateinamen von Windows .msu Dateien kürzen

Beitrag von Ben » 21.03.2021, 14:52

@DK2000 Die Codebox setzt nur die Tabulatoren um, deshalb sind die Abstände so groß. :hihi:

Benutzeravatar
DK2000
Legende
Legende
Beiträge: 10012
Registriert: 03.04.2018, 00:07
Hat sich bedankt: 223 Mal
Danke erhalten: 686 Mal
Gender:

Re: Dateinamen von Windows .msu Dateien kürzen

Beitrag von DK2000 » 21.03.2021, 15:08

@Ben:
Ja, das war mir da schon klar mit den Tabulatoren. Bei stehen die auf 4 Leerzeichen. Aber im Forum wohl deutlich höher.

@Holgi:
Also das Umbenennen der Updateplatform ****.exe klappt auch mit dem Script von Ben, auch wenn der mir hier ein paar seltsame Fehler produziert. ABer das Umbenennen klappt.

Acho, hatte vergessen, "delims=" einzufügen. Jetzt läuft es ohne komische Fehr durch und benennt alles um.

Wobei das "pushd %~dp0" würde ich da durch "cd /d "%~dp0" ersetzen. "pushd" macht nur dann wirklich Sinn, wenn man das Verzeichnis wechseln will, aber das ursprüngliche Verzeichnis sichern will. In dem Falle kann man dann mittels "popd" wieder in das alte Verzeichnis zurück bzw. wenn man öfters "pushd" ausgeführt hat, dann in das Verzeichnis zurück, welches im Stack ganz oben liegt.

Benutzeravatar
Ben
★ Team Blog ★
Beiträge: 1032
Registriert: 28.12.2017, 15:19
Hat sich bedankt: 47 Mal
Danke erhalten: 84 Mal
Gender:

Re: Dateinamen von Windows .msu Dateien kürzen

Beitrag von Ben » 21.03.2021, 16:34

So ich hab da jetzt auch mal mit Forfiles rumgespielt. :D Und das ist dabei rausgekommen. Das funktioniert auch mit Leerzeichen im Pfad.

Code: Alles auswählen

@echo off
color 1f
pushd %~dp0
setlocal EnableExtensions
setlocal EnableDelayedExpansion
forfiles /s /m "*.msu" /C "cmd /c for /f """tokens=1,2 delims=_""" %%a in (@fname) do (ren @path "%%a.msu")"
forfiles /s /m "*.cab" /C "cmd /c for /f """tokens=1,2 delims=_""" %%a in (@fname) do (ren @path "%%a.cab")"
forfiles /s /m "*.exe" /C "cmd /c for /f """tokens=1,2 delims=_""" %%a in (@fname) do (ren @path "%%a.exe")"

Benutzeravatar
Holgi
Guru
Guru
Beiträge: 3098
Registriert: 12.05.2018, 12:33
Hat sich bedankt: 392 Mal
Danke erhalten: 509 Mal
Gender:

Re: Dateinamen von Windows .msu Dateien kürzen

Beitrag von Holgi » 21.03.2021, 17:12

vielen, vielen Dank DK2000 und Ben.
Ich würde sagen, das Thema kann auf "gelöst" gesetzt werden (muss wohl ein Moderator machen?)!
:dankeschoen:
PDF24 angepasste Installation (nur PDF Druckertreiber) per Script: viewtopic.php?t=30284
Winget (Desktop App Installer) für Windows Versionen ohne Store installieren (HowTo): viewtopic.php?t=26214
Vorstellung: tiny11builder; Script zur Verschlankung von Windows 11: viewtopic.php?t=30134
Windows StartMenü Empfohlen (Recommended Section) komplett ausblenden: viewtopic.php?t=30574
Hyper-V VM per Script erstellen viewtopic.php?t=25114

Antworten