shirash
Goto Top

Kopieren per Batch, Dateiname aendert stetig

Hallo erstmal zusammen,

ich bin schon eine ganze Weile auf administrator.de unterwegs und habe mich auf die Suche nach einer Lösung für mein Problem gemacht. Es sind schon einige Lösungsansätze da, die mir sicherlich helfen könnten, nur schaffe ich es nicht, dies zu realisieren.... vielleicht stehe ich auch nur auf dem Schlauch.

Info vorab:
Ich nutze Windows Vista Business, SP 1 32bit.

Ziel ist es, dass ich jede Woche am Freitag eine Datei von einem Netzlaufwerk auf meinen lokalen Rechner übertragen will. Diese Datei wird umbenannt und auf einen FTP-Server hochgeladen, wo sie die alte Datei überschreibt. Den Part mit dem FTP Server und dem Hochladen habe ich bereits erledigt.

Die Datei, welche vom Netzlaufwerk auf meinen Rechner übertragen wird hat in etwa folgendes Schema:

text25.htm <---- die 25 steht hier für die Kalenderwoche.

Hier ist auch das Problem. Die Kalenderwoche ist natürlich jeden Freitag zur Übertragung eine andere, zählt also um 1 hoch. Mit einem VB Script konnte ich jetzt die Kalenderwoche auslesen und an meine Batch übergeben:

'----snipp KalWo.vbs
Wscript.Echo DatePart("ww",Date,vbSunday,vbFirstFourDays)
'------snapp KalWo.vbs

Hier dann meine bisherige Batchdatei(KalWo ist natürlich das VBScript, das im selben Ordner liegt):

@echo off
for /f "tokens=1" %%a in ('cscript //nologo KalWo.vbs') do set kw=%%a
echo %kw%

pause

copy Y:\HOMEPAGE\text(kw).htm c:\web\

ftp -s:dateiftp.ftp

Ich müsste also praktisch nur noch die Variable für die Kalenderwoche an den Dateinamen für den Copybefehl übertragen.

Ist das so überhaupt realisierbar?

Ich hoffe, dass ich zumindest die richtige Denkweise habe, ansonsten darf man mich gerne eines Besseren belehren.

Vielen Dank schonmal im Voraus und freundliche Grüße

Shirash

Content-ID: 90031

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

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

60730
60730 17.06.2008 um 12:31:03 Uhr
Goto Top
Moin und willkommen.
Du hast es doch schon fast geschafft.

copy Y:\HOMEPAGE\text%kw%.htm c:\web\

bzw. wenn die alte datei eh gelöscht wird, reicht auch
copy Y:\HOMEPAGE\text*.htm c:\web\text.htm
Shirash
Shirash 17.06.2008 um 12:45:53 Uhr
Goto Top
Vielen Dank für die schnelle Antwort.

Bei deiner oberen Lösung kommt die Fehlermeldung, dass das System die angebebene Datei nicht finden kann.

Die zweite Vartiante würde zwar so funktionieren, jedoch sind mehrere Dateien auf dem Netzlaufwerk, die text(Kalenderwoche).htm heißen... d.h. er würde ja dann stets alle übertragen.

Deswegen auch die Sache mit der Kalenderwoche, die zwingend Bestandteil des Copy-Befehls sein muss.
60730
60730 17.06.2008 um 12:55:39 Uhr
Goto Top
?

ok - dann lass doch bitte das echo off mal weg und schaue, was passiert.

rem @echo off
for /f "tokens=1" %%a in ('cscript //nologo KalWo.vbs') do set kw=%%a  
echo %kw%
copy text%kw%.htm *.html


wenn ich das bei mir laufen lasse und in dem Ordner eine text25.htm liegt - hab ich später auch eine text25.html
edit:

Die zweite Vartiante würde zwar so funktionieren, jedoch sind mehrere Dateien auf dem Netzlaufwerk, die text(Kalenderwoche).htm heißen...
d.h. er würde ja dann stets alle übertragen.

Nein, er würde in dem Fall aus allen eine machen, was ja auch nicht der Sinn ist.
bastla
bastla 17.06.2008 um 14:14:23 Uhr
Goto Top
... kann es sein, dass der Dateiname "text(25).htm" und die entsprechende Zeile daher
copy Y:\HOMEPAGE\text(%kw%).htm c:\web\
lauten sollte?

Grüße
bastla
60730
60730 17.06.2008 um 14:19:58 Uhr
Goto Top
Moin Bastla

ich tippe darauf, daß derjenige - der die htm erzeugt noch schläft und es dort nur die text24.htm gibt face-wink *flitz*
Shirash
Shirash 17.06.2008 um 14:26:31 Uhr
Goto Top
So, hallo nochmal,

das Entfernen des echo hat geholfen...

Ich bekomme folgende Ausgabe:

c:\web\kwtest\set kw=25

c:\web\kwtest>copy c:\web\kwtest\text25 .htm c:\web\kwtest\indexdatei.htm
Das System kann die angegebene Datei nicht finden.

Wie ihr sehen könnt, wird hinter der Variablen ein Leerzeichen eingefügt, weswegen wohl auch die Datei nicht gefunden wird. Ich frage mich allerdings, wie dieses da dann hinkommt.
60730
60730 17.06.2008 um 14:32:35 Uhr
Goto Top
aha..

na dann "Asta la Vista" ;-(


rem @echo off
for /f "tokens=1" %%a in ('cscript //nologo KalWo.vbs') do set kw=%%a  
echo %kw%:%kw%
pause
copy "text%kw%.htm" *.html  

lass das mal laufen - steht nun 25:25 oder 25 : 25 vor der Pause?

Kopiert er es "so?

edit:

ärgs - so einfach...

man nehme einfach eine Kombination, von dem, was ich als erste Antwort geschrieben habe und kriegt folgendes raus:

copy Y:\HOMEPAGE\text%kw%*.htm c:\web\
Alternativ geht natürlich auch:
copy Y:\HOMEPAGE\text%kw%?.htm c:\web\
Shirash
Shirash 17.06.2008 um 14:46:52 Uhr
Goto Top
So...

Das echo spuckt mir 25 :25 aus.. also weiterhin mit einem Leerzeichen hinter der Variable.

Es wird also ebenfalls nicht kopiert, selbst mit den Anführungszeichen.

Als ich jedoch die Datei spaßeshalber umbenannt hab...das Leerzeichen in den Dateinamen eingefügt habe, übernimmt er es und das Kopieren klappt.

Leider kann ich nicht jeder Kalenderwoche ein Leerzeichen in den Dateinamen einbauen *g*

Tante Edith:

HA! So klappt es auch wunderbar. Zwar keine Lösung um das Leerzeichen da wegzubekommen, aber so klappt es.

Ich danke dir von ganzem Herzen für den Eifer!
Biber
Biber 17.06.2008 um 15:33:59 Uhr
Goto Top
Moin Shirash,

Zwar keine Lösung um das Leerzeichen da wegzubekommen
Versuch es so.
...
for /f %%a in ('cscript //nologo KalWo.vbs') do set "kw=%%a"  
...
Und die Anzeige der Variablen %kw% wird so sinnvoller.
echo Kw:[%kw%]

Grüße
Biber
Shirash
Shirash 17.06.2008 um 15:42:55 Uhr
Goto Top
Das ist es.
Danke dir, Biber face-smile