Winzip Dateien umbenennen
Hallo ,
ich habe eine Frage zu einen kleinen Problem. Ich habe mehrere winzip Dateien. In der winzip Datei befindet sich jeweils eine txt Datei. Ich möchte den Dateiname der txt Datei im jeweiligen Archiv auf den Archiv Namen übertragen. Das heisst man sollte dann am Archiv Name sehen wie die TXT Datei im Archiv heisst.
z.B. Archiv name fshkuer233.zip kselll.txt sollte dann so aussehen kselll.zip im Archiv kselll.txt
kann man sowas realisieren mit einen DOS Skripts.
VG
Tommhi
ich habe eine Frage zu einen kleinen Problem. Ich habe mehrere winzip Dateien. In der winzip Datei befindet sich jeweils eine txt Datei. Ich möchte den Dateiname der txt Datei im jeweiligen Archiv auf den Archiv Namen übertragen. Das heisst man sollte dann am Archiv Name sehen wie die TXT Datei im Archiv heisst.
z.B. Archiv name fshkuer233.zip kselll.txt sollte dann so aussehen kselll.zip im Archiv kselll.txt
kann man sowas realisieren mit einen DOS Skripts.
VG
Tommhi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 366209
Url: https://administrator.de/contentid/366209
Ausgedruckt am: 08.11.2024 um 11:11 Uhr
6 Kommentare
Neuester Kommentar
Powershell:
Gruß Snap
Add-Type -A System.IO.Compression
Add-Type -A System.IO.Compression.FileSystem
gci 'D:\Ordner" -Filter *.zip -File | %{
$zip = [System.IO.Compression.ZipFile]::OpenRead($_.Fullname)
$newname = $zip.Entries.Name | ?{[IO.Path]::GetExtension($_) -eq '.txt'} | select -First 1 | %{[IO.Path]::GetFileNameWithoutExtension($_) + ".zip"}
$zip.Dispose()
$_ | Rename-Item -NewName $newname -Force
}
DOS? Du redest sicher von Windows Batch.
Antwort: Nein, nicht mit Bordmitteln. Wenn du ein Komprimierungsprogramm installiert hast, dass sich über die Kommandozeile steuern lässt und die Möglichkeit bietet den Inhalt auszulesen ohne das Archiv zu entpacken, dann ja. Ansonsten ist das halt mit anderen Scriptsprachen machbar...
Steffen
Antwort: Nein, nicht mit Bordmitteln. Wenn du ein Komprimierungsprogramm installiert hast, dass sich über die Kommandozeile steuern lässt und die Möglichkeit bietet den Inhalt auszulesen ohne das Archiv zu entpacken, dann ja. Ansonsten ist das halt mit anderen Scriptsprachen machbar...
Steffen
Servus.
Also wenn er zumindest noch VBS in der Batch mit ins Boot holen darf dann ginge z.B. auch dies:
Wobei sich das PS Skript natürlich auch komplett in eine Batch einbetten ließe, aber naja jeder wie er will/ kann/muss.
Grüße Uwe
Also wenn er zumindest noch VBS in der Batch mit ins Boot holen darf dann ginge z.B. auch dies:
@echo off & setlocal
set "folder=D:\Ordner"
set "vbstmp=%temp%\z.vbs"
>"%vbstmp%" (echo For Each itm In CreateObject^("Shell.Application"^).NameSpace^(wscript.Arguments^(0^)^).Items : If LCase^(Right^(itm.Name,4^)^) ^= ".txt" Then wscript.echo itm.Name : Exit For : End If : Next)
for %%a in ("%folder%\*.zip") do for /f "delims=" %%b in ('cscript //NOLOGO "%vbstmp%" "%%a"') do (if not exist "%folder%\%%~nb.zip" ren "%%a" "%%~nb.zip")
Grüße Uwe
Eben, wie gesagt mit anderen Scriptsprachen. JScript Hybrid:
*.bat
Somit sollten es nun ausreichend Möglichkeiten sein ...
Steffen
*.bat
@if (@a)==(@b) @end /*
@echo off & setlocal
set "folder=D:\Ordner"
for %%a in ("%folder%\*.zip") do for /f "delims=" %%b in ('cscript //nologo //e:jscript "%~fs0" "%%a"') do (if not exist "%folder%\%%~nb.zip" ren "%%a" "%%~nb.zip")
goto :eof */
var items = WScript.CreateObject('Shell.Application').NameSpace(WScript.Arguments(0)).Items();
for (var i = 0; i < items.Count; ++i) { if (items.Item(i).Name.toLowerCase().slice(-4) == '.txt') { WScript.Echo(items.Item(i).Name); } }
Steffen