philippwienes
Goto Top

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

Content-Key: 128239

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

Printed on: April 16, 2024 at 10:04 o'clock

Mitglied: 45877
45877 Oct 29, 2009 at 14:26:10 (UTC)
Goto Top
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
Member: philippwienes
philippwienes Oct 29, 2009 at 14:28:11 (UTC)
Goto Top
Hardlinks habe ich schon probiert, geht nicht mit Netzlaufwerken.
Batch-Datei ist schon okay.. das muss doch irgendwie funktioniert was zum Teufel >.<
Member: Snowman25
Snowman25 Oct 29, 2009 at 14:28:36 (UTC)
Goto Top
wenn du deinen beitrag leserlich formatierst, helf ich dir vielleicht :-P
Member: philippwienes
philippwienes Oct 29, 2009 at 14:32:08 (UTC)
Goto Top
Done, sorry bin in rage :D.................
Member: Iwan
Iwan Oct 29, 2009 at 14:32:22 (UTC)
Goto Top
hallo,

benutz statt CALL lieber START:
START /wait  "C:\Terzio\Fritz und Fertig\Fritz und Fertig\Fritz und Fertig.exe"  
START / WAIT -> Startet die Anwendung und wartet auf das Ende
somit geht es erst weiter, wenn die Fritz und Fertig.exe nicht mehr läuft
Member: philippwienes
philippwienes Oct 29, 2009 at 14:33:07 (UTC)
Goto Top
Ah ganz vergessen! Das ganze läuft unter XP, sorry!
Member: philippwienes
philippwienes Oct 29, 2009 at 14:37:44 (UTC)
Goto Top
Der Befehl funktioniert gar nicht bei mir?

Wenn ich in der Dos-konsole START /wait "C:\Terzio\Fritz und Fertig\Fritz und Fertig\Fritz und Fertig.exe" eingebe, öffnet sich nur ein neues fenster, das spiel aber nicht?!
Member: Snowman25
Snowman25 Oct 29, 2009 at 14:39:58 (UTC)
Goto Top
Dann stimmt was mit dem spiel nicht...

übrigens: eine Doskonsole gabs als letztes in Win98 als Command.com
Member: philippwienes
philippwienes Oct 29, 2009 at 14:43:41 (UTC)
Goto Top
Ähm ich bekomm mit dem Befehl auch kein anderes Programm gestartet.
Mitglied: 45877
45877 Oct 29, 2009 at 14:44:58 (UTC)
Goto Top
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 >.<

Aber auf UNC Pfade
Member: philippwienes
philippwienes Oct 29, 2009 at 14:45:26 (UTC)
Goto Top
Ohne Anführungszeichen gehts anscheinend, eben mit fritzuf. testen..

Hm toll aber der Pfad des Programmes hat so viele Leerzeichen.. ^^
Member: Snowman25
Snowman25 Oct 29, 2009 at 14:46:15 (UTC)
Goto Top
und ohne wait?
ich vermute mal, dass der fritz und fertig.exe nur das eigentliche programm startet und sich dan selbst wieder beendet. Sollte im wesentlichen eigentlich nicht stören. Aber versuchs mal
Member: Iwan
Iwan Oct 29, 2009 at 14:50:33 (UTC)
Goto Top
ich vergass, das XP da schon mal etwas, hm, zicken kann, wenn man keinen Titel angibt
probier das hier mal:
START /wait  "Fritz&Fertig" "C:\Terzio\Fritz und Fertig\Fritz und Fertig\Fritz und Fertig.exe"  
Member: philippwienes
philippwienes Oct 29, 2009 at 14:51:41 (UTC)
Goto Top
Ehm Anführungszeichen gehne mit dem start befehl nicht zusammen... wie kann ich das denn sonst noch mit leerzeichen machen? :O
Naja zum testen ändere ich eben den programmpfad
Member: Iwan
Iwan Oct 29, 2009 at 14:57:41 (UTC)
Goto Top
les mal meinen vorherigen Beitrag (2 Beiträge weiter oben)
Member: philippwienes
philippwienes Oct 29, 2009 at 15:05:41 (UTC)
Goto Top
Jop der Befehl geht jetzt, allerdings hat sich am Problem nichts geändert.. der Befehl nach dem Start /wait wird nicht ausgeführt...
Es kann ja eigentlich auch nicht am call gelegen haben, ohne den "runas" Kram ging es ja wunderbar.
:/
Member: Snowman25
Snowman25 Oct 29, 2009 at 15:07:26 (UTC)
Goto Top
Du führst das ganze aber nicht IM runas aus, oder?
Member: philippwienes
philippwienes Oct 29, 2009 at 15:19:17 (UTC)
Goto Top
Wie meinst du das?
Ich habe quasi eine Datei mit:

runasspc.exe /program:"C:\Pfad zur Batch-Datei" /domain:"localhost" /user:"testadmin" /password:"password"

bloß, dass ich es eben über diese cryptfile mache, sodass das Pw nicht auslesbar ist.
Und eine zweite Datei, die bei "Pfad zur Batch-Datei" eingesetzt ist ^^


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
Member: Snowman25
Snowman25 Oct 29, 2009 at 15:23:48 (UTC)
Goto Top
was passiert, wenn du im Windows Explorer direkt in den Programmordner navigierst und dort die Fritz und Fertig.exe startest?`Möglichweise lässt es sich ja nur über bestimmte parameter starten, die sonst nur bei der verknüpfung auf dem desktop und dem Startmenü vorhanden sind
Member: philippwienes
philippwienes Oct 29, 2009 at 15:27:52 (UTC)
Goto Top
Das Spiel startet doch wunderbar... nur wir dnach dem beenden der zweite Xcopy befehl nicht ausgeführt. :o
Member: Snowman25
Snowman25 Oct 29, 2009 at 15:43:12 (UTC)
Goto Top
mit Fehlermeldung oder ohne irgendetwas?
Anscheinend öffnet die exe wirklich nur eine andere Anwendung, die das Spiel beinhaltet, also wird der 2. xcopy-befehl nicht ausgeführt, wenn das spiel beendet wird, sondern wenn der loader beendet wird.
Member: philippwienes
philippwienes Oct 29, 2009 at 15:49:53 (UTC)
Goto Top
Ich kann das Problem jetzt ein wenig eingrenzen:
Hab mal testweise beim zweiten xcopy befehl den zweiten Pfad auf einen lokalen Ordner geändert.:


xcopy "c:\Terzio\Fritz und Fertig\Fritz und Fertig\Spieler" "C:\Test" /d /E /y /I

Das hat funktioniert!

Wenn ich das Netzlaufwerk angebe kommt:

Fehlermeldung: Verzeichnis kann nicht erstellt werden

Scheinbar funktioniert läuft der runas befehl nach dem call Befehl nicht mehr!
Das ist ja total dumm :/
Member: 5t8d1e
5t8d1e Oct 29, 2009 at 16:38:55 (UTC)
Goto Top
Hallo.

wieso eigentlich immer so kompliziert und nicht einfach?

gib den nutzern einfach schreibrechte auf die Dateien und gut ist. Dann hat sich das auch mit den ganzen runas Gedönse.

Torsten
Member: philippwienes
philippwienes Oct 29, 2009 at 16:45:14 (UTC)
Goto Top
Würde ich gerne ;)
Ist aber alles ein wenig kompliziert hier und ich bin nur der kleine Zivi, der gehorchen muss.
(Große Einrichtung mit über 300 Benutzern)
Member: Biber
Biber Oct 29, 2009 at 18:11:19 (UTC)
Goto Top
Moin phillippwienes,

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
Member: philippwienes
philippwienes Oct 29, 2009 at 19:03:27 (UTC)
Goto Top
Die Benutzer dürfen nur neue Datein/Ordner lokal erstellen, überschreiben geht nicht.