grazioli
Goto Top

Ordner mit Batchdatei erstellen

Hallo zusammen,

ich habe folgendes im Sinn!

Daten werden mit einer Batchdatei vom Server geholt und in einen Unterordner vom Hauptordner kopiert!

Meine Daten (local auf meinem PC) liegen auf H:\SQL Backup\befehle.ini und H:\SQL Backup\batch.bat
8d7d003ad01cf779328d9e53668e4d67

batch.bat:
@echo off
md %date%
xcopy befehle.ini %date%
cd %date%
ftp -s:befehle.ini
del befehle.ini
exit

Wie bringe ich die Batch-Datei dazu einen Ordner mit dem Jahr und darin einen Ordner mit dem Monat zu erzeugen?
Den Ordner mit dem Tag habe ich ja mit %date% erstellt!

Bedanke mich für Eure Hilfe!

Gruss Grazioli

Content-ID: 133664

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

Ausgedruckt am: 05.11.2024 um 13:11 Uhr

rubberman
rubberman 17.01.2010 um 20:33:01 Uhr
Goto Top
Hallo Grazioli,

das Verzeichnis könntest du so erstellen:
@echo off &setlocal
set Root=C:\irgendwo\SQL Backup
chcp 1252>nul
set Monat01=Januar
set Monat02=Februar
set Monat03=März
set Monat04=April
set Monat05=Mai
set Monat06=Juni
set Monat07=Juli
set Monat08=August
set Monat09=September
set Monat10=Oktober
set Monat11=November
set Monat12=Dezember
chcp 850>nul
for /f "delims=. tokens=2,3" %%a in ("%date%") do set "M=%%a" &set "Y=%%b"  
call set M=%%Monat%M%%%
pushd "%Root%"  
md "%Y%\%M%\%date%"  
popd

Grüße
rubberman

<edit> Den Fehlerteufel umgebracht</edit>
mayho33
mayho33 17.01.2010 um 22:12:21 Uhr
Goto Top
Hi!

so eventuell?

md %date%\%date:~-7,2%

Grüße

Mayho
Grazioli
Grazioli 18.01.2010 um 17:33:07 Uhr
Goto Top
Hallo,

und danke für Eure Antworten!

Wo muss ich jetzt meinen Code noch einfügen?

@echo off
md %date%
xcopy befehle.ini %date%
cd %date%
ftp -s:befehle.ini
del befehle.ini
exit

Der Code von Oben geht, bis zum Monat, aber es erstellt mir auch nicht den Ordner Tag und kopiert mir die befehle.ini nicht ins Verzeichniss!

Und wie kann ich jetzt noch zwei FTP Zugänge mit meiner befehle.ini öffnen und schliessen?
open ftp.web.ch
grazioli@web.ch
test123
get db-backup/grazioli_test1.sql

open ftp.web5.ch
grazioli@web5.ch
test123456
get db-backup/grazioli_test2.sql
bye


Gruss Grazioli
rubberman
rubberman 18.01.2010 um 19:08:37 Uhr
Goto Top
Hallo Grazioli,

habe mir gerade deinen ersten Post noch mal genauer angeschaut. Gehen wir davon aus, dass dein Batch und die *ini im Verzeichnis "H:\SQL Backup" liegen.

@echo off &setlocal
chcp 1252>nul
set Monat01=Januar
set Monat02=Februar
set Monat03=März
set Monat04=April
set Monat05=Mai
set Monat06=Juni
set Monat07=Juli
set Monat08=August
set Monat09=September
set Monat10=Oktober
set Monat11=November
set Monat12=Dezember
chcp 850>nul
for /f "delims=. tokens=2,3" %%a in ("%date%") do set "M=%%a" &set "Y=%%b"  
call set M=%%Monat%M%%%
cd /d "H:\SQL Backup"  
md "%Y%\%M%\%date%"  
copy "G:\Hostpoint Backup\SQL Backup\befehle.ini" "%Y%\%M%\%date%\befehle.ini"  
pushd "%Y%\%M%\%date%"  
ftp -s:befehle.ini
del befehle.ini
popd

Ob die Geschichte mit den zwei FTP Zugängen so funktioniert, kann ich nicht sagen. Dazu habe ich zu wenig Erfahrung mit FTP.

Grüße
rubberman
Grazioli
Grazioli 18.01.2010 um 20:52:53 Uhr
Goto Top
Hallo,

es geht einfach nicht richtig!

Den Ordner mit dem Datum und das copy von befehle.ini in den Ordner Tag geht nicht!

Es wird den Ordner Tag garnicht erstellt! Es werden alle sql-DB im Verzeichnis "H:\SQL Backup" erstellt!

Gruss Grazioli
rubberman
rubberman 18.01.2010 um 21:23:09 Uhr
Goto Top
Hallo Grazioli,

hab mal Zeile 22 auskommentiert
:: del befehle.ini
um zu sehen, ob die *.ini angekommen ist und (zumindest bei mir) funktioniert das soweit.
\2010\Januar\18.01.2010\befehle.ini wird angelegt.
Weiß aus der Ferne nicht woran das liegen könnte.

Grüße
rubberman
Grazioli
Grazioli 19.01.2010 um 05:35:50 Uhr
Goto Top
Hallo,

habe Deine Postings nochmals durchgelesen, und fand den Fehler:

Die Daten liegen nicht im Verzeichnis "H:\SQL Backup" sondern im Verzeichniss "G:\Hostpoint Backup\SQL Backup"!

Darum kopiert es mir die ini nicht dort hin! Schreibfehler von mir!

Gruss Grazioli
rubberman
rubberman 19.01.2010 um 10:59:17 Uhr
Goto Top
Hallo Grazioli,

hab mal im Post vom 18.01.2010, 19:08:37 geändert. So sollte es dann hoffentlich endgültig funktionieren. Schau dir die Angaben in Zeile 18 und 20 noch mal an.

Grüße
rubberman
Grazioli
Grazioli 20.01.2010 um 20:54:39 Uhr
Goto Top
Hallo nochmals,

kann es sein das mir mein Win7 einen strich durch mein Vorhaben macht? Ich habe gerade gemerkt, das ich nirgends nur erwähnt hätte, was für ein System ich habe.

Mein Code sieht so aus:
@echo off &setlocal 
chcp 1252>nul 
set Monat01=Januar 
set Monat02=Februar 
set Monat03=März 
set Monat04=April 
set Monat05=Mai 
set Monat06=Juni 
set Monat07=Juli 
set Monat08=August 
set Monat09=September 
set Monat10=Oktober 
set Monat11=November 
set Monat12=Dezember 
chcp 850>nul 
for /f "delims=. tokens=2,3" %%a in ("%date%") do set "M=%%a" &set "Y=%%b"   
call set M=%%Monat%M%%% 
cd /d "G:\Hostpoint_Backup\SQL_Backup\"  
md "%Y%\%M%\%date%"   
copy "G:\Hostpoint_Backup\SQL_Backup\befehle_grazioli.ini" "%Y%\%M%\%date%\befehle_grazioli.ini"  
pushd "%Y%\%M%\%date%"  
ftp -s:befehle_grazioli.ini 
popd

Habe auch versucht, keine Abstände mehr in den Ordnernamen zu haben, darum auch _!

Es erstellt die SQL-DB in G:\Hostpoint_Backup\SQL_Backup und den Ordner Jahr, Monat erstellt es mir auch.
Es erstellt mir einfach den Ordner mit dem Datum nicht, und kopiert auch die ini nicht dort hin!

Danke Gruss Grazioli
rubberman
rubberman 20.01.2010 um 21:07:03 Uhr
Goto Top
Hallo Grazioli,

habe nur XP zum testen.
was spuckt denn ein
echo %date%
in der Kommandozeile für ein Format bei dir aus?

Grüße
rubberman

PS: Code Tags
<code>
</code>
Grazioli
Grazioli 20.01.2010 um 21:13:04 Uhr
Goto Top
im cmd erhalte ichdas Datum so: 20.01.2010
rubberman
rubberman 20.01.2010 um 21:35:56 Uhr
Goto Top
Es wird doch unter Win 7 noch erlaubt sein Punkte im Verzeichnisnamen zu haben?! Könntest du so ein Verzeichnis händisch anlegen?
How ever. Möglich wäre ja auch noch nur den Tag als Verzeichnisname zu nutzen, Jahr und Monat hast du ja bereits im Pfad.
@echo off &setlocal
chcp 1252>nul
set Monat01=Januar
set Monat02=Februar
set Monat03=März
set Monat04=April
set Monat05=Mai
set Monat06=Juni
set Monat07=Juli
set Monat08=August
set Monat09=September
set Monat10=Oktober
set Monat11=November
set Monat12=Dezember
chcp 850>nul
for /f "delims=. tokens=1-3" %%a in ("%date%") do set "D=%%a" &set "M=%%b" &set "Y=%%c"  
call set M=%%Monat%M%%%
cd /d "G:\Hostpoint_Backup\SQL_Backup\"  
md "%Y%\%M%\%D%"  
copy "G:\Hostpoint_Backup\SQL_Backup\befehle_grazioli.ini" "%Y%\%M%\%D%\befehle_grazioli.ini"  
pushd "%Y%\%M%\%D%"  
ftp -s:befehle_grazioli.ini
popd

Grüße
rubberman
Biber
Biber 20.01.2010 um 21:45:17 Uhr
Goto Top
Moin Grazioli,

es könnte sein, dass du durch unbeabsichtigte Leerzeichen [z.b. hinter den "Set Monat01=Januar " und dem "Call Set .... "]
Probleme beim Anlegen des Tages-Verzeichnisses bekommst.

Versuche es so:
@echo off &setlocal 
chcp 1252>nul 
Set "Sqlroot="G:\Hostpoint_Backup\SQL_Backup"  
set "Monat01=Januar"  
set "Monat02=Februar"  
set "Monat03=März"  
set "Monat04=April"  
set "Monat05=Mai"  
set "Monat06=Juni"  
set "Monat07=Juli"  
set "Monat08=August"  
set "Monat09=September"  
set "Monat10=Oktober"  
set "Monat11=November"  
set "Monat12=Dezember"  
chcp 850>nul 
for /f "delims=. tokens=2,3" %%a in ("%date%") do set "M=%%a" & set "Y=%%b"   
call set "M=%%Monat%M%%%"  
REM ....FOR what...auskommentiert cd /d "%sqlRoot%"  
md "%sqlroot%\%Y%\%M%\%date%"   
copy "%sqlRoot%\befehle_grazioli.ini" "%sqlroot%\%Y%\%M%\%date%\befehle_grazioli.ini"  
pushd "%sqlRoot%\%Y%\%M%\%date%"  
ftp -s:befehle_grazioli.ini 
popd
[die neue Variable %sqlroot% ist nur zur Reduzierung von Tippfehlern... lieber dieses Verzeichnis an EINER Stelle eintippen]

Grüße
Biber
rubberman
rubberman 20.01.2010 um 21:58:41 Uhr
Goto Top
@Biber
über die Leerzeichen hätte ich auch stolpern können. Mglw. hast du Recht.

Zitat von @Biber:
REM ....FOR what...auskommentiert cd /d "%sqlRoot%"


Mir war nicht so recht klar, wo der Batch liegt. Also nur zur Sicherheit.

Grüße
rubberman
Biber
Biber 20.01.2010 um 22:08:26 Uhr
Goto Top
Moin rubberman,

Zitat von @rubberman:
> Zitat von @Biber:
> ----
> REM ....FOR what...auskommentiert cd /d "%sqlRoot%"
>

Mir war nicht so recht klar, wo der Batch liegt. Also nur zur Sicherheit.
ja, aber.....
... es ist ein bisschen Augenwischerei,
  • ZUERST mit "Cd /d irgendwohin" Laufwerk und Pfad zu wechseln
  • sich DANN zwei Zeilen weiter mit "PUSHD irgendwohin" das jetzt aktuelle Lw/Verz zu merken und es zu verlassen
  • und AM ENDE mit "POPD" wieder "zurückzukehren" nach..... ja wohin denn? Nicht dorthin, wo der Batch begann.

Insofern brachte das Streben " Also nur zur Sicherheit." eher eine trügerische Sicherheit... face-wink

Grüße
Biber
rubberman
rubberman 20.01.2010 um 23:24:28 Uhr
Goto Top
Hallo Biber,

du hast Recht, sauber ist das nicht.
Ich konkretisiere:
Die Zeile war ursprünglich nicht im Code und ist mit einer Änderung (19.01.2010, 10:59:17) eingeflossen. Sich beim Erstellen der Ordnerstruktur im richtigen Verzeichnis zu befinden, ist IMHO für das Vorhaben entscheidender, als nach POPD wieder im Ursprungsverzeichnis zu landen (Batch-Ende face-wink ). Wo nun was liegt, ist mir immer noch nicht ganz klar. Die ursprünglich genannten Pfade und das Posting von 19.01.2010, 05:35:50 Uhr widersprechen sich nach meinem Verständnis.

Grüße
rubberman
Grazioli
Grazioli 21.01.2010 um 05:41:07 Uhr
Goto Top
Also ich habe jetzt die genauen Pfade nochmals angehängt!

483b1c8dea24d1b8292544e09c779993
7b5b0f5399b9852c15b0adc908886db9
60730
60730 21.01.2010 um 11:20:21 Uhr
Goto Top
Zitat von @rubberman:
PS: Code Tags
<code>
</code>


[OT]
@rubberman - die "Schreibweise gut face-wink - auf die muß man(n) erst mal kommen face-wink Merke ich mir face-wink
[/OT]
bastla
bastla 21.01.2010 um 14:48:33 Uhr
Goto Top
@rubberman
[genauso OT]
Ich weiß zwar überhaupt nicht, wozu man(n)
<code>
</code>
brauchen könnte face-wink - aber mir gefällt's jedenfalls auch ...face-smile
[/genauso OT]

Grüße
bastla
rubberman
rubberman 21.01.2010 um 16:39:49 Uhr
Goto Top
Hallo Grazioli,

was ist dann mit Bibers Version?
Schon probiert?

Grüße
rubberman
rubberman
rubberman 21.01.2010 um 16:56:45 Uhr
Goto Top
[auch noch mal OT]
Vielen Dank für die Blumen, Euch beiden.
Zu posten, was man schreiben muss damit es so aussieht, wie es aussieht, verkneife ich mir aber jetzt... face-wink
[/auch noch mal OT]

Grüße
rubberman
Grazioli
Grazioli 21.01.2010 um 17:36:52 Uhr
Goto Top
Zitat von @Biber:

REM ....FOR what...auskommentiert cd /d "%sqlRoot%"

was ist mit dem gemeint?
bastla
bastla 21.01.2010 um 18:22:46 Uhr
Goto Top
Hallo Grazioli!
was ist mit dem gemeint?
Dass Dein Test, wenn Du ihn dann einmal in Angriff nimmst, mit oder ohne diese Zeile gleich ausgehen wird ...

Grüße
bastla
Grazioli
Grazioli 21.01.2010 um 18:32:36 Uhr
Goto Top
Der Test ist soweit, dass es mir den Ordner mit dem Tag jetzt erstellt!

Die befehle_grazioli.ini aber nicht ausführt!
rubberman
rubberman 21.01.2010 um 20:01:31 Uhr
Goto Top
Hallo Grazioli,

das entwickelt sich ja zur "Unendlichen Geschichte" face-wink

Erstelle folgenden Two-Liner im neu erstellten Verzeichnis:
ftp -s:befehle_grazioli.ini
pause
Und nun schau mal, ob ftp irgendwelche Meldungen bringt.
BTW Ich weiß nicht, wie die *.ini ursprünglich erstellt wird. Auch hier können Leerzeichen am Zeilenende zu Fehlern führen!

Grüße
rubberman
Grazioli
Grazioli 22.01.2010 um 19:15:21 Uhr
Goto Top
Also, folgendes erhalte ich jetzt:

Bild gelöscht, nach hinweis auf private Daten!


Grues Grazioli
Grazioli
Grazioli 22.01.2010 um 20:14:43 Uhr
Goto Top
Ok, jetzt geht es:

@echo off &setlocal
chcp 1252>nul
set "Monat01=Januar"  
set "Monat02=Februar"  
set "Monat03=März"  
set "Monat04=April"  
set "Monat05=Mai"  
set "Monat06=Juni"  
set "Monat07=Juli"  
set "Monat08=August"  
set "Monat09=September"  
set "Monat10=Oktober"  
set "Monat11=November"  
set "Monat12=Dezember"  
chcp 850>nul
for /f "delims=. tokens=2,3" %%a in ("%date%") do set "M=%%a" & set "Y=%%b"  
call set "M=%%Monat%M%%%"  
cd /d "G:\Hostpoint_Backup\SQL_Backup"  
md "G:\Hostpoint_Backup\SQL_Backup\%Y%\%M%\%date%"  
copy "G:\Hostpoint_Backup\SQL_Backup\befehle_fw.ini" G:\Hostpoint_Backup\SQL_Backup\%Y%\%M%\%date%\befehle_fw.ini  
pushd "G:\Hostpoint_Backup\SQL_Backup\%Y%\%M%\%date%"  
ftp -s:befehle_fw.ini
del befehle_fw.ini

copy "G:\Hostpoint_Backup\SQL_Backup\befehle_grazioli.ini" G:\Hostpoint_Backup\SQL_Backup\%Y%\%M%\%date%\befehle_grazioli.ini  
pushd "G:\Hostpoint_Backup\SQL_Backup\%Y%\%M%\%date%"  
ftp -s:befehle_grazioli.ini
del befehle_grazioli.ini
exit

Danke allen für die Hilfe!

Gruss Grazioli
Biber
Biber 22.01.2010 um 23:44:58 Uhr
Goto Top
Moin Grazioli,

sorry, die Ursache für die letzten Holprigkeiten war ein Tippfehler von mir in der Zeile 3 (die neue Variable %sqlroot%

die Zeile enthält 3 Anführungszeichen statt 2, was in der Folge natürlich zu dem Fehler beim Copy führt.
Richtiger wäre gewesen:

Set  "sqlroot=G:\Hostpoint_Backup\SQL_Backup"  

Tut mir Leid, hatte ich übersehen.

Grüße
Biber