derdoctor
Goto Top

Gleichzeitiges Entpacken und Umbenennen von Dateien per FOR Schleife

Ich hab schon ein paar andere Umbenennnungsarien mit FOR gemacht, auch nach Tips die ich hier bekam. Aber bei o.G Fragestellung komme ich nicht weiter

Die Aufgabenstellung:

Entpacken und Umbenennen einer in ein Zip File gepackter Datei mit dem Dateinamen des Zipfiles.

Zipfile=xyz.zip, File im zip=enc023203.txt diese soll nach entpacken dann auch xyz.txt heissen.
Da es auch mehre Zipfiles sein können, die aber immer nur eine Datei enthalten, denke ich ist eine For schleife das einzig senkrechte.
Entpackt wird mit 7zip.

Ich hab mal angefangen was zu Tippen:

<code type>
for /f "delims=" %%i IN ("c:\temp*.zip") DO c:\programme\7z x c:\temp\*.zip -oc:\temp2\ (for %%a IN ("c:\temp2\*.txt") DO ren %%a - %%i.txt)

Vielleicht ist das ja völliger Bullshit was ich da getippt habe, jedenfalls bekomme ich egal was ich auch hinter dem 7z Zielpfad schreibe einen Syntax Error vom 7z nehme ich die Subschleife am Ende weg ist alles gut, das Zip wird entpackt, aber eben mit dem Namen den ich nicht brauchen kann.
Ich hab von einem Kollegen hier mal einen Tip bekommen mit der Subschleife, da habe ich das hier auch mal probiert.
Kann es sein das 7z solche Sachen nicht mitmacht?

Vielen Dank

[Edit Biber] Formatierung geändert auf
Kommentar vom Moderator Biber am Jun 11, 2010 um 15:38:47 Uhr
Zitat von @derdoctor:
nur beim umbennen macht das das Batch unter 4nt nicht.
Ich hab schon ein paar andere Umbenennnungsarien ....
WTF ist nur an dem Wort "um-be-nen-nen" so tippfehlerträchtig???
Set /a rgc+=2
Ungültige Zahl. Zahlen sind begrenzt auf eine Genauigkeit von 32 Bits.

Schönes Wochenende
Biber

Content-Key: 144614

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

Printed on: April 25, 2024 at 06:04 o'clock

Member: bastla
bastla Jun 10, 2010 at 20:44:23 (UTC)
Goto Top
Hallo derdoctor!

Eher so:
for /f "delims=" %%i IN ("c:\temp\*.zip") DO (c:\programme\7z x c:\temp\*.zip -oc:\temp2\ && for %%a IN ("c:\temp2\*.txt") DO ren "%%a" "%%~ni.txt")
Grüße
bastla

P.S.: Ich finde Batch in ""-Formatierung schöner ...
Member: derdoctor
derdoctor Jun 11, 2010 at 08:26:50 (UTC)
Goto Top
Vielen, vielen Dank lieber Bastla,

die "&&" haben mir gefehlt. Soweit geht das alles, nur leider läuft es nicht unter 4nt, die Datei wird immer in %-ni.txt umbenannt. Obwohl der eigentliche Variablenname durchaus vorhanden ist. Also wenn ich statt dem Befehl "ren" mal ein Echo %%~ni setze kriege ich brav den Dateinamen der Zip Datei ausgegeben nur beim umbennen macht das das Batch unter 4nt nicht.

Naja in der normalen shell gehts und das reicht ja auch,

Vielen vielen Dank.
Member: pieh-ejdsch
pieh-ejdsch Jun 11, 2010 at 13:44:03 (UTC)
Goto Top
Moin derdoctor,

nimm doch die Informationen aus der Auflistung von 7Zip um die Texfiles nachher umzubenennen!


ungefähr so
@echo off
set "ZipDateiOrnder=D:\Heruntergeladen\0 Frisch Heruntergeladen\Archiv"  
set "AusgepackterOrdner=D:\Heruntergeladen\0 Frisch Heruntergeladen\Archiv\cTestordner"  
set "Dateityp=.txt"  
pushD "%AusgepackterOrdner%"  
for /f "tokens=1,2*" %%i in ('7za l "%ZipDateiOrnder%\*.zip"') do if "%%i" == "Listing" (set "ZipName=%%~nk") else (echo %%i|findstr /b /v "7 E D -">nul &&for /f "tokens=6* delims=: " %%l in ("%%j %%k") do if "%Dateityp%" == "%%~xm" call  :Rename "%%m")  
popD&pause&goto :eof
:Rename
if not exist "%~dp1%ZipName%%Dateityp%" (echo ren "%~1" "%ZipName%%Dateityp%") else echo ren "%~1" "%ZipName%(%~n1)%Dateityp%"  

bei Erfolg @echo entfernen.

[Edit]
for %%a IN ("c:\temp2\*.txt") DO ren "%%a" "%%~ni.txt"
benennt doch aber alle TXT-Dateien des Ordners in den ZIP-Namen um ....!
Woher weiss dann die Zeile welche Dateien sie nicht umbenennen soll?
[/Edit]

Gruß Phil
Member: derdoctor
derdoctor Jun 12, 2010 at 12:29:19 (UTC)
Goto Top
Hallo Phil,

vielen dank für diese Mühe

[quote]
benennt doch aber alle TXT-Dateien des Ordners in den ZIP-Namen um ....!
Woher weiss dann die Zeile welche Dateien sie nicht umbenennen soll?
[/quote]

naja es ist definitiv immer nur eine Datei im Zipfile eingepackt, daher reicht die erste Lösung, wobei deine ja der "Königsweg" ist

Vielen herzlichen Dank