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 11.06.2010 um 17: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

Ausgedruckt am: 29.03.2024 um 11:03 Uhr

Mitglied: bastla
bastla 10.06.2010 um 22:44:23 Uhr
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 ...
Mitglied: derdoctor
derdoctor 11.06.2010 um 10:26:50 Uhr
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.
Mitglied: pieh-ejdsch
pieh-ejdsch 11.06.2010 um 15:44:03 Uhr
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
Mitglied: derdoctor
derdoctor 12.06.2010 um 14:29:19 Uhr
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