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
Please also mark the comments that contributed to the solution of the article
Content-Key: 366209
Url: https://administrator.de/contentid/366209
Printed on: April 26, 2024 at 23:04 o'clock
6 Comments
Latest comment
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