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-Key: 366209

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

Printed on: April 26, 2024 at 23:04 o'clock

Mitglied: 135333
135333 Feb 27, 2018 updated at 09:16:22 (UTC)
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
Member: tommhii
tommhii Feb 27, 2018 at 14:11:42 (UTC)
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
Member: rubberman
rubberman Feb 27, 2018 at 17:42:52 (UTC)
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
Member: colinardo
colinardo Mar 01, 2018 updated at 14:15:57 (UTC)
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
Member: rubberman
rubberman Mar 01, 2018 at 17:44:03 (UTC)
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
Member: tommhii
tommhii Mar 02, 2018 at 09:56:40 (UTC)
Goto Top
Danke für die viele Unterstützung
werde mal testen was sich machen lässt.

VG
Tommhi