Batch-Programmierung
Hallo,
Ich bin nur ein kleiner Zivi, also verzeiht mir, wenn ich nicht ganz so viel Ahnung habe ;)
Folgende Situation:
Ein Programm legt einen Ordner mit den Spielständen im Programmordner ab. Der Pfad lässt sich nicht ändern.
Nun soll ich es hinbekommen, dass alle Spielstände auf dem Server gespeichert werden, sodass jeder Benutzer von jedem Rechner auf jeden Spielstand zugreifen kann.
Hab schon viel rumprobiert und die einfachste Lösung ist wohl eine Batchdatei.
Damit hab ich jetzt aber ein Problem:
Die Benutzer haben alle nur eingeschränke Rechte und können keine Datein überschreiben, das ist aber zwingend notwendig.
Folgende Datein habe ich jetzt geschrieben:
X:\FritzundFertig\runasspc\runasspc.exe /cryptfile:"X:\FritzundFertig\crypt.spc" /quiet
Wobei X: Ein Netzwerkordner ist. Damit wird sich verschlüsselt mit einem Adminacc eingeloggt und die nächste Batch Datei gestartet:
ECHO=on
net use X: \\192.168.0.1\images /y
xcopy x:\Anwendungsdaten\FritzundFertig\Spieler "c:\Terzio\Fritz und Fertig\Fritz und Fertig\Spieler" /d /E /y /I
call "C:\Terzio\Fritz und Fertig\Fritz und Fertig\Fritz und Fertig.exe"
xcopy "c:\Terzio\Fritz und Fertig\Fritz und Fertig\Spieler" "x:\Anwendungsdaten\FritzundFertig\Spieler" /d /E /y /I
Net use, weil der Netzwerkordner ja sonst nicht verfügbar ist, da das Laufwerk mit dem runas befehl erstmal nicht verfügbar ist.
Dann werden per xcopy die Datein vom Server in den Spieleordner kopiert. Parameter dabei, damit keine neuen Datein mit Alten überschrieben werden.
So weit funktioniert das alles auch wunderbar... auch das Programm wird mit call noch geöffnet.
Allerdings funktioniert das Zurückkopieren nicht. Nach dem Call Befehl schließt sich die Batch einfach ohne irgendeine Meldung.
Wenn ich das mit dem runas weglassen, also nur:
xcopy x:\Anwendungsdaten\FritzundFertig\Spieler "c:\Terzio\Fritz und Fertig\Fritz und Fertig\Spieler" /d /E /y /I
call "C:\Terzio\Fritz und Fertig\Fritz und Fertig\Fritz und Fertig.exe"
xcopy "c:\Terzio\Fritz und Fertig\Fritz und Fertig\Spieler" "x:\Anwendungsdaten\FritzundFertig\Spieler" /d /E /y /I
Und das ganze dann als Admin ausführe (Rechte zum Überschreiben) funktioniert es tadellos.. muss also irgendwie am runas liegen :/
Wo zum Teufel liegt der Fehler? Ich krieg noch ne Krise
Ich bin nur ein kleiner Zivi, also verzeiht mir, wenn ich nicht ganz so viel Ahnung habe ;)
Folgende Situation:
Ein Programm legt einen Ordner mit den Spielständen im Programmordner ab. Der Pfad lässt sich nicht ändern.
Nun soll ich es hinbekommen, dass alle Spielstände auf dem Server gespeichert werden, sodass jeder Benutzer von jedem Rechner auf jeden Spielstand zugreifen kann.
Hab schon viel rumprobiert und die einfachste Lösung ist wohl eine Batchdatei.
Damit hab ich jetzt aber ein Problem:
Die Benutzer haben alle nur eingeschränke Rechte und können keine Datein überschreiben, das ist aber zwingend notwendig.
Folgende Datein habe ich jetzt geschrieben:
X:\FritzundFertig\runasspc\runasspc.exe /cryptfile:"X:\FritzundFertig\crypt.spc" /quiet
Wobei X: Ein Netzwerkordner ist. Damit wird sich verschlüsselt mit einem Adminacc eingeloggt und die nächste Batch Datei gestartet:
ECHO=on
net use X: \\192.168.0.1\images /y
xcopy x:\Anwendungsdaten\FritzundFertig\Spieler "c:\Terzio\Fritz und Fertig\Fritz und Fertig\Spieler" /d /E /y /I
call "C:\Terzio\Fritz und Fertig\Fritz und Fertig\Fritz und Fertig.exe"
xcopy "c:\Terzio\Fritz und Fertig\Fritz und Fertig\Spieler" "x:\Anwendungsdaten\FritzundFertig\Spieler" /d /E /y /I
Net use, weil der Netzwerkordner ja sonst nicht verfügbar ist, da das Laufwerk mit dem runas befehl erstmal nicht verfügbar ist.
Dann werden per xcopy die Datein vom Server in den Spieleordner kopiert. Parameter dabei, damit keine neuen Datein mit Alten überschrieben werden.
So weit funktioniert das alles auch wunderbar... auch das Programm wird mit call noch geöffnet.
Allerdings funktioniert das Zurückkopieren nicht. Nach dem Call Befehl schließt sich die Batch einfach ohne irgendeine Meldung.
Wenn ich das mit dem runas weglassen, also nur:
xcopy x:\Anwendungsdaten\FritzundFertig\Spieler "c:\Terzio\Fritz und Fertig\Fritz und Fertig\Spieler" /d /E /y /I
call "C:\Terzio\Fritz und Fertig\Fritz und Fertig\Fritz und Fertig.exe"
xcopy "c:\Terzio\Fritz und Fertig\Fritz und Fertig\Spieler" "x:\Anwendungsdaten\FritzundFertig\Spieler" /d /E /y /I
Und das ganze dann als Admin ausführe (Rechte zum Überschreiben) funktioniert es tadellos.. muss also irgendwie am runas liegen :/
Wo zum Teufel liegt der Fehler? Ich krieg noch ne Krise
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 128239
Url: https://administrator.de/forum/batch-programmierung-128239.html
Ausgedruckt am: 19.04.2025 um 11:04 Uhr
26 Kommentare
Neuester Kommentar

Hallo,
wäre es nicht einfacher den Ordner per symbolischer verknüpfung bzw. junction point
auf den Serverordner zu verlinken?
http://de.wikipedia.org/wiki/Symbolische_Verkn%C3%BCpfung#Windows
wäre es nicht einfacher den Ordner per symbolischer verknüpfung bzw. junction point
auf den Serverordner zu verlinken?
http://de.wikipedia.org/wiki/Symbolische_Verkn%C3%BCpfung#Windows

Zitat von @philippwienes:
Hardlinks habe ich schon probiert, geht nicht mit Netzlaufwerken.
Batch-Datei ist schon okay.. das muss doch irgendwie funktioniert was
zum Teufel >.<
Hardlinks habe ich schon probiert, geht nicht mit Netzlaufwerken.
Batch-Datei ist schon okay.. das muss doch irgendwie funktioniert was
zum Teufel >.<
Aber auf UNC Pfade
Moin phillippwienes,
vielleicht versteh ich das Problem nicht oder hab es schon mit den Augen, aber...
--> Dann kannst du doch deine Batchdatei so aufbauen
1.Befehl im StartemirDasSpiel.bat: kopiere spielstände von X: nach C: mit Dau-Rechten
2.Befehl im StartemirDasSpiel.bat: Starte Spiel auf C: mit Dau-Rechten
3.Befehl im StartemirDasSpiel.bat: Starte dieses RunAsSpc-Skript mit dem einzigen Befehlen "Net use x:" und "Kopiere von C: nach X"
Oder übersehe ich etwas?
Grüße
Biber
vielleicht versteh ich das Problem nicht oder hab es schon mit den Augen, aber...
- die einzige Stelle, an der den normalen Usern die Rechte fehlen ist doch das kopieren AUF das Share (Laufwerk X)
- das Kopieren VON X: AUF C: darf doch der Otto-Normal-DAU machen
- und das Kopieren VON C: auf X: ist immer nur nötig (meinetwegen mit RunAsSpc) , wenn eine neue Runde gespielt wurde.
--> Dann kannst du doch deine Batchdatei so aufbauen
1.Befehl im StartemirDasSpiel.bat: kopiere spielstände von X: nach C: mit Dau-Rechten
2.Befehl im StartemirDasSpiel.bat: Starte Spiel auf C: mit Dau-Rechten
3.Befehl im StartemirDasSpiel.bat: Starte dieses RunAsSpc-Skript mit dem einzigen Befehlen "Net use x:" und "Kopiere von C: nach X"
Oder übersehe ich etwas?
Grüße
Biber