tommhii
Goto Top

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

Content-ID: 366209

Url: https://administrator.de/contentid/366209

Ausgedruckt am: 08.11.2024 um 11:11 Uhr

135333
135333 27.02.2018 aktualisiert um 10:16:22 Uhr
Goto Top
Powershell:
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
}
Gruß Snap
tommhii
tommhii 27.02.2018 um 15:11:42 Uhr
Goto Top
Hallo snap
Danke für Deine schnelle Antwort. Ich muss das aber leider mit einen DOS Batch realisieren.
Vielleicht hast Du ja dafür auch eine Lösung.

VG
Tommhi
rubberman
rubberman 27.02.2018 um 18:42:52 Uhr
Goto Top
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
colinardo
colinardo 01.03.2018 aktualisiert um 15:15:57 Uhr
Goto Top
Servus.
Zitat von @rubberman:
DOS? Du redest sicher von Windows Batch.
Antwort: Nein, nicht mit Bordmitteln.
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")  
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
rubberman
rubberman 01.03.2018 um 18:44:03 Uhr
Goto Top
Eben, wie gesagt mit anderen Scriptsprachen. JScript Hybrid:
*.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); } }  
Somit sollten es nun ausreichend Möglichkeiten sein ...

Steffen
tommhii
tommhii 02.03.2018 um 10:56:40 Uhr
Goto Top
Danke für die viele Unterstützung
werde mal testen was sich machen lässt.

VG
Tommhi