PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Win 7 x64 - Script frage


wollev45
2013-10-02, 19:59:46
Ich bräuchte mal jemand der etwas ahnung hat...

dies ist ein Script welches den Arma3 Server updatet.
Das das file auf meinem Server liegt und mehrere Leute den Server Updaten können möchte ich aus sicherheitsgründen keine Benutzernamen und Passwörter darin haben,
Stattdessen sollte nach möglichkeit beim Ausführen der Datei auf einfachste weise nach dem benutzernamen und Kennwort gefragt werden.
nach dem ausführen des Scriptes sollte natürlich nichts mehr von den eingebenen Daten zu sehen sein...
Ich weis das man die Datei entsprechend editieren kann, es gibt aber leute die sich bei solch simplen sachen schon schwertun.
Lässt sich so etwas Realisieren und wenn ja, wie ?
"SET STEAMLOGIN= username password" ist der "bereich" welcher vom user ausgefüllt werden sollte.

@echo off

SETLOCAL ENABLEDELAYEDEXPANSION

:: DEFINE the following variables where applicable to your install

SET STEAMLOGIN= username password
SET A3BRANCH=107410 -beta
:: For stable use 107410 -beta
:: For Dev use 107410 -beta development
:: Note, the missing qotation marks, these need to be wrapped around the entire "+app_data......"

SET A3Path=c:\arma3\ArmA3\A3Master
SET STEAMPATH=C:\arma3


:: _________________________________________________________

echo.
echo You are about to update ArmA3
echo Dir: %A3Path%
echo Branch: %A3BRANCH%
echo.
echo Key "ENTER" yo procede
pause
%STEAMPATH%\steamcmd.exe +login %STEAMLOGIN% +force_install_dir %A3Path% +"app_update %A3BRANCH%" validate +quit
echo .
echo Your ArmA3 is now up to date
echo key "ENTER" to exit
pause

Lokadamus
2013-10-02, 20:06:03
Ich befürchte, das wird so nichts. Aber um deine Frage zu beantworten (und ich hab auch wieder was gelernt, aber nicht getestet).

set /P Benutzer=Benutzername
set /P Passwort=Geheimes Kennwort

sollten demnach bei deinem Problem weiterhelfen. Allerdings ist keine Überprüfung auf Gültigkeit des Benutzernamens oder Passwortes vorhanden.

MooN
2013-10-02, 23:15:15
http://stackoverflow.com/questions/1223721/in-windows-cmd-how-do-i-prompt-for-user-input-and-use-the-result-in-another-com

set /P Benutzer=Benutzername: %=%
set /P Passwort=Benutzername: %=%


Das mit "ENTER" würde ich rausnehmen, führt nur zu Verwirrung. Es findet ja doch keine Abfrage nach der Eingabe statt.

Darkman.X
2013-10-03, 02:27:54
Wozu soll denn das "%=%" gut sein? Ich werde auch aus deinem Link nicht schlau daraus.

Lokadamus
2013-10-03, 02:40:56
Spontan geraten:
Die eingegebene Variable soll als feste Variable übernommen werden.
Ob das so sein muss, weiß ich nicht. Momentan läuft bei mir FreeBSD, weshalb ich es nicht testen kann. ;(
So hätte ich gesagt, dass meine Antwort schon reicht, um die Variable zu definieren und zu füllen.

sei laut
2013-10-03, 10:27:15
Ich müsste es auch auf meinem Windows PC testen, aber %=% dürfte die Variable exportieren. Da wird gesagt: "You can then use %id% as a parameter to another batch file." (bei bash ist das ein `export $meinetollevariable`)

Bei /set p variable= Was für eine Variable hätten wir denn gerne? ist wohl auch das Leerzeichen nach dem = Zeichen entscheidend.

wollev45
2013-10-03, 13:35:37
also die batchdatei verstehe ich noch recht gut, aber das was ihr hier tippt ist mir zu hoch:-)

Darkman.X
2013-10-03, 16:04:50
hmm, also ich habe das mit einer Test1.bat in Win7 getestet ...

@ECHO OFF
set /P Benutzer=Benutzername:
set /P Passwort=Passwort:
Test2.bat

... also ohne dem "%=%". Und in der Test2.bat konnte ich die Variablen "Benutzer" und "Passwort" ohne Probleme auslesen. Es machte auch keinen Unterschied ob in der Test1.bat noch das SETLOCAL & ENDLOCAL nutzte. Oder ob ich die Test2.bat mit oder ohne CALL aufrief.

Ich bin ja sehr lernwillig bei Batch-Sachen, besonders bei Sachen, die man in der Hilfe nicht so findet. Aber das "%=%" macht für mich immer noch keinen Sinn. Oder ich verstehe eure Hinweise mit "feste Variable" oder "Variable exportieren" falsch...

wollev45
2013-10-03, 17:13:42
Jungs, Danke !
So läuft es wie ich es möchte !
Ihr seit echte Profis :-)

@echo off

SETLOCAL ENABLEDELAYEDEXPANSION

:: DEFINE the following variables where applicable to your install
set /P Benutzer=Benutzername: %=%
set /P Passwort=Benutzername: %=%
SET STEAMLOGIN= %benutzer% %passwort%
SET A3BRANCH=107410 -beta
:: For stable use 107410 -beta
:: For Dev use 107410 -beta development
:: Note, the missing qotation marks, these need to be wrapped around the entire "+app_data......"

SET A3Path=c:\arma3\ArmA3\A3Master
SET STEAMPATH=C:\arma3


:: _________________________________________________________

echo.
echo You are about to update ArmA3
echo Dir: %A3Path%
echo Branch: %A3BRANCH%
echo.
echo Key "ENTER" yo procede
pause
%STEAMPATH%\steamcmd.exe +login %STEAMLOGIN% +force_install_dir %A3Path% +"app_update %A3BRANCH%" validate +quit
echo .
echo Your ArmA3 is now up to date
echo key "ENTER" to exit
pause