cali169
Goto Top

Dateinamen via batch script auslesen, Datei zippen und anschliessend in den ausgelesenen Namen umbenennen

Hallo zusammen,

hoffe auf hilfe, habe schon nach einer lösung gesucht aber nichts gefunden.

vielen dank im voraus.

ich habe folgende Szenario

es soll via script der Dateiname "WEBXMSWV.0.DB2.NODE0000.CATN0000.20091025233508.001"

einer Datei die im Pfad "D:\test\" liegt, ausgelesen werden. Danach soll diese Datei

gezippt werden. Die gezippte Datei DB2.zip soll jetzt in den ausgelesenen Dateinamen

"WEBXMSWV.0.DB2.NODE0000.CATN0000.20091025233508.001" umbenannt werden.

Ich habe folgendes script zum zippen der Datei


@echo off

C:\Programme\7-Zip\7z.exe a DB2.zip "D:\test\WEB*.001"


dieses script funktioniert auch, leider weiss ich nicht wie ich via script den Dateinamen

auslesen kann und die gezippte Datei umbenennen kann.

was auch noch schön wäre ist das das script in "c:\batch" liegt und die Datei in "D:\test\"

zippt. Aktuell wird das zip immer da hinterlegt wo ich das script liegen habe.
Kommentar vom Moderator Biber am 17.03.2010 um 13:50:23 Uhr
Zitat von @cali169:
ja ist ein sinnloser Umweg das zip erst benennen und dann umbennen in den Orginaltext.
#rgc := 651

Content-Key: 138448

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

Ausgedruckt am: 28.03.2024 um 23:03 Uhr

Mitglied: 60730
60730 17.03.2010 um 11:45:41 Uhr
Goto Top
moin,

rem @echo off
rem denn das ist nur dafür gut, wenn die Batch auch so läuft, wie man das will

for /f %%a in ('dir /b D:\test\*.*') do C:\Programme\7-Zip\7z.exe a D:\test\%%a "D:\test\%%a"  

Wobei das "ungeschickt ist - die "quelle" und das Ziel mit *.* zu durchleuchten - denn läuft das Script zum 2.mal - zipppt es die zipps auch nochmal.

Gruß
edit @ Bastla: dafür hast du das viel netter umschrieben und dein Schleifchen gefällt mir auch besser, als das meinige.
Mitglied: bastla
bastla 17.03.2010 um 11:48:13 Uhr
Goto Top
Hallo cali!

Es drängen sich einige Fragen auf_
  • Gibt es im Ordner "D:\test" immer nur eine .001-Datei?
  • Falls nein, soll für jede einzelne Datei eine eigene ZIP-Datei erstellt werden?
  • In beiden Fällen: Das Umbenennen auf den ursprünglichen Dateinamen kann ja nur funktonieren, wenn die ZIP-Datei in einen anderen Ordner gelegt oder die Ausgangsdatei zwischenzeitlich gelöscht wird - wie sieht der Plan in dieser Hinsicht aus?

Falls das Ziel ein anderer Ordner und jeweils eine eigene ZIP-Datei ist, sollte das (ungetestet) etwa so zu machen sein:
for %%i in (D:\test\*.001) do C:\Programme\7-Zip\7z.exe a -tzip "D:\Anderer Order\%%~nxi" "%%i"  
Grüße
bastla

[Edit] @timobeil: Du bist aber heute wieder schnell ... face-wink [/Edit]
Mitglied: cali169
cali169 17.03.2010 um 12:08:52 Uhr
Goto Top
hallo zusammen danke für die schnellen antworten,


das script läuft 1x in der Woche und wird via Taskplaner gesteuert, der Taskplaner ist bis jetzt immer zuverlässig gewesen,

an dem Tag wo das script laufen soll ist in dem Ordner definitiv nur eine Datei vorhanden, dafür sorgt ein anderes script.

also mein zipp script erstellt mir ja die db2.zip und dies wird nur noch umbenannt und da ist kein problem mit gleichen namen

einmal eine normale datei und dann noch eine zip datei mit gleichen namen das funktioniert im gleichen Ordner.

bis das Script das 2te mal läuft ist wieder nur 1 Datei vorhanden. Ich teste es jetzt gleich und gebe Feeback.
Mitglied: 60730
60730 17.03.2010 um 12:12:36 Uhr
Goto Top
Servus,

naja Bastla hat da schon recht...

Die gezippte Datei DB2.zip soll jetzt in den ausgelesenen Dateinamen
"WEBXMSWV.0.DB2.NODE0000.CATN0000.20091025233508.001" umbenannt werden.

du schreibst es ja so und nicht "WEBXMSWV.0.DB2.NODE0000.CATN0000.20091025233508.001.zip"

Und wie wir beide schrieben, das mit db2.zip und dann umbenennen ist quark
Mitglied: bastla
bastla 17.03.2010 um 12:15:02 Uhr
Goto Top
Hallo cali169!

Wenn
soll jetzt in den ausgelesenen Dateinamen "WEBXMSWV.0.DB2.NODE0000.CATN0000.20091025233508.001" umbenannt werden.
also bedeutet: ... soll in "WEBXMSWV.0.DB2.NODE0000.CATN0000.20091025233508.001.zip" umbenannt werden - dann:
for %%i in (D:\test\*.001) do C:\Programme\7-Zip\7z.exe a "%%~i.zip" "%%i"  
Grüße
bastla

[Edit] @timobeil: Wird schon knapper ... face-wink [/Edit]
Mitglied: cali169
cali169 17.03.2010 um 13:46:04 Uhr
Goto Top
Hallo bastla und Timo,


nocheinmal vielen Dank für die Hilfe und das Augen öffnen face-wink das script

for %%i in (D:\test\*.001) do C:\Programme\7-Zip\7z.exe a "%%~i.zip" "%%i"

funktioniert genauso wie ich es brauche, @ Timo ja ist ein sinnloser Umweg das zip erst benennen und dann umbennen in den Orginaltext.

lieber gleich mit dem aktuellen Namen zippen,

nun würde ich gern noch etwas lernen, also den Teil "C:\Programme\7-Zip\7z.exe " der es zippt den verstehe ich auch die Pfadangabe,

nur was heisst das "for %%i in" und das "a "%%~i.zip" "%%i" ?

vielen Dank im Voraus cali
Mitglied: 60730
60730 17.03.2010 um 13:53:15 Uhr
Goto Top
Moin.

for %%i in (D:\test\*.001) do C:\Programme\7-Zip\7z.exe a "%%~i.zip" "%%i"
für jeden Treffer (genannt i )in (D:\test\*.001) mache C:\Programme\7-Zip\7z.exe a Treffer Trefferohne.suffix.zip Treffer

Naja so ungefährlich beschreiben ist nicht meine Stärke.

gruß

Ps:
[Edit] @timobeil: Wird schon knapper ... face-wink [/Edit]
Ja der Sommer/ Frühling soll ja bald auch da sein, dann werden die Röcke auch wieder knapper face-wink
und dann läuft dem Papa wieder der Sabba *lol*
Mitglied: cali169
cali169 17.03.2010 um 14:17:28 Uhr
Goto Top
hallo Timo,

vielen Dank, du hast es aber so beschrieben das ich es verstanden habe.