Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Vista] Wisselen van files d.m.v. scripting file rename *

Pagina: 1
Acties:

  • Zerora
  • Registratie: September 2003
  • Laatst online: 30-11 22:30

Zerora

Ik Henk 'm!

Topicstarter
Ik heb een batchscriptje waarmee ik tussen twee bestanden wil kunnen schakelen.

Het is als volgt.
Ik probeer het opstarten van World of Warcraft wat makkelijker te maken. Ik speel namelijk op de officiële server, maar soms wil ik voor de fun ook ff een private server bezoeken.
Dus ik dacht eraan om een batch-scriptje te maken (in Vista(32bit)) om tussen twee bestanden te schakelen zodat ik uiteindelijk met 1 muisklik en 1 druk op de knop mijn gewenste WoW server kan opstarten om te spelen.

Wat ik wil is het volgende:
Ik heb een bestand realmlist.wtf (file welke WoW uitleest naar welke servers je gaat) en een bestand aniwow_realmlist.wtf of blizzard_realmlist.wtf (een van de twee).
Nu wil ik dat als ik keuze 1 (official) kies dat ie dan kijkt of blizzard_realmlist.wtf bestaat (keuze 2 voor de private server). Mocht die bestaann dan moet ie de bestaande realmlist.wtf van naam veranderen naar pserver_realmlist.wtf (oude realmlist backuppen). Vervolgens mag ie blizzard_realmlist.wtf renamen naar realmlist.wtf en dan WoW opstarten. Hetzelfde verhaal voor keuze 2 dus, maar tegenovergestelde.

Ik heb tot nu toe het volgende batch-script bij elkaar weten te zetten:
Batchfile:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@ECHO  OFF
CLS
@ECHO Welke WoW opstarten?
@ECHO -
@ECHO   [1] Officiele WoW
@ECHO   [2] Private server
@ECHO   [3] Einde script
@ECHO -
CHOICE /c:123
IF ERRORLEVEL 1 GOTO blizzard
IF ERRORLEVEL 2 GOTO pserver
IF ERRORLEVEL 3 GOTO end
GOTO end

:blizzard
@ECHO Officiele WoW opstarten...
IF EXIST blizzard_realmlist.wtf REN realmlist.wtf pserver_realmlist.wtf
REN blizzard_realmlist.wtf realmlist.wtf
START wow.exe
IF NOT EXIST blizzard_realmlist.wtf START wow.exe

:pserver
@ECHO Private server opstarten...
IF EXIST pserver_realmlist.wtf REN realmlist.wtf blizzard_realmlist.wtf
REN pserver_realmlist.wtf realmlist.wtf
START wow.exe
IF NOT EXIST pserver_realmlist.wtf START wow.exe

:end
EXIT


Mijn probleem is nu dat het script het opzich wel aardig doet, behalve het belangrijkste. Het schakelen tussen de twee bestanden.
Ik krijg met dit enkel de realmlist.wtf om op de officiele server te kunnen, dus ergens pakt het script die switching niet goed.
Alleen ik kan maar niet ontdekken wat ik fout doe of over het hoofd zie.

Weet iemand hier raad mee?

Dit topic over batch-scripting is geopend met toestemming van alt-92
edit:
typfoutje verbeterd in codeblok

Trans-life! :::: "All things change, whether from inside out or the outside in. That is what magic is. And we are magic too."


  • Rone
  • Registratie: April 2002
  • Niet online

Rone

Moderator Tweaking
Je zou de errorlevels eens om kunnen draaien. Dus:

code:
1
2
3
IF ERRORLEVEL 3 GOTO end
IF ERRORLEVEL 2 GOTO pserver
IF ERRORLEVEL 1 GOTO blizzard

PC1: 9800X3D + RX 9070 XT || PC2: 5800X3D + RTX 3080 || Laptop: 7735HS + RTX 4060


  • Zerora
  • Registratie: September 2003
  • Laatst online: 30-11 22:30

Zerora

Ik Henk 'm!

Topicstarter
r00n schreef op maandag 30 juni 2008 @ 21:07:
Je zou de errorlevels eens om kunnen draaien. Dus:

code:
1
2
3
IF ERRORLEVEL 3 GOTO end
IF ERRORLEVEL 2 GOTO pserver
IF ERRORLEVEL 1 GOTO blizzard
Als de errorlevels naar deze volgorde omdraai dan start enkel keuze 1 (1 toets) WoW.exe op. De rest sluit het scriptvenster af.

Trans-life! :::: "All things change, whether from inside out or the outside in. That is what magic is. And we are magic too."


  • Rone
  • Registratie: April 2002
  • Niet online

Rone

Moderator Tweaking
Zerora schreef op maandag 30 juni 2008 @ 22:22:

Als de errorlevels naar deze volgorde omdraai dan start enkel keuze 1 (1 toets) WoW.exe op. De rest sluit het scriptvenster af.
Je moet dan natuurlijk ook de labels omdraaien. De gehele code komt er dan zo uit te zien:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@ECHO  OFF
CLS
@ECHO Welke WoW opstarten?
@ECHO -
@ECHO   [1] Officiele WoW
@ECHO   [2] Private server
@ECHO   [3] Einde script
@ECHO -
CHOICE /c:123
IF ERRORLEVEL 3 exit
IF ERRORLEVEL 2 GOTO pserver
IF ERRORLEVEL 1 GOTO blizzard
exit

:pserver
@ECHO Private server opstarten...
IF EXIST pserver_realmlist.wtf REN realmlist.wtf blizzard_realmlist.wtf
REN pserver_realmlist.wtf realmlist.wtf
START wow.exe
IF NOT EXIST pserver_realmlist.wtf START wow.exe
exit

:blizzard
@ECHO Officiele WoW opstarten...
IF EXIST blizzard_realmlist.wtf REN realmlist.wtf aniwow_realmlist.wtf
REN blizzard_realmlist.wtf realmlist.wtf
START wow.exe
IF NOT EXIST blizzard_realmlist.wtf START wow.exe
exit
edit:
Even wat zinloze GOTO's verwijderd.

[ Voor 3% gewijzigd door Rone op 30-06-2008 22:39 ]

PC1: 9800X3D + RX 9070 XT || PC2: 5800X3D + RTX 3080 || Laptop: 7735HS + RTX 4060


  • sewer
  • Registratie: November 2000
  • Laatst online: 13:51
Heb geen vista meer, maar onder xp wordt choice niet meer ondersteund. Alternatief:


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@ECHO  OFF
CLS
:start
@ECHO Welke WoW opstarten?
@ECHO -
@ECHO   [1] Officiele WoW
@ECHO   [2] Private server
@ECHO   [3] Einde script
@ECHO -
set choice=
set /p choice=Selecteer een optie.
if not '%choice%'=='' set choice=%choice:~0,1%
if '%choice%'=='1' goto blizzard
if '%choice%'=='2' goto pserver
if '%choice%'=='3' goto end
ECHO "%choice%" is geen geldige optie.
ECHO.
goto start

:blizzard
@ECHO Officiele WoW opstarten...
IF EXIST blizzard_realmlist.wtf REN realmlist.wtf aniwow_realmlist.wtf
REN blizzard_realmlist.wtf realmlist.wtf
START wow.exe
IF NOT EXIST blizzard_realmlist.wtf START wow.exe
exit

:pserver
@ECHO Private server opstarten...
IF EXIST pserver_realmlist.wtf REN realmlist.wtf blizzard_realmlist.wtf
REN pserver_realmlist.wtf realmlist.wtf
START wow.exe
IF NOT EXIST pserver_realmlist.wtf START wow.exe

:end
EXIT


edit:
Lees net ergens dat hij weer terug is onder vista, maar kan het even niet voor je testen. Maar probeer anders mijn code eens...

[ Voor 6% gewijzigd door sewer op 30-06-2008 22:42 ]


  • Zerora
  • Registratie: September 2003
  • Laatst online: 30-11 22:30

Zerora

Ik Henk 'm!

Topicstarter
Beide codeblokken hebben dezelfde uitkomst momenteel. Namelijk dat er nog steeds in beide gevallen de officiele server wordt opgestart.
Ik zag nog wel een typfout van mezelf. Aan het einde van regel 17 pserver_realmlist.wtf staan ipv wat er nu staat. Nadat ik die gefixt had werkte het script nog steeds niet helaas (Zelfde uitwerking).

Ik snap het niet meer :S

Trans-life! :::: "All things change, whether from inside out or the outside in. That is what magic is. And we are magic too."


  • sewer
  • Registratie: November 2000
  • Laatst online: 13:51
Serieus? Ik kan jouw programma niet helemaal testen, aangezien ik het betreffende spelletje niet geinstalleerd heb. Maar als je onderstaande code uitvoert, krijg je dan niet de goede echo-statements te zien als je dat onder vista uitvoert :?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
@ECHO  OFF
CLS
:start
@ECHO Welke WoW opstarten?
@ECHO -
@ECHO   [1] Officiele WoW
@ECHO   [2] Private server
@ECHO   [3] Einde script
@ECHO -
set choice=
set /p choice=Selecteer een optie.
if not '%choice%'=='' set choice=%choice:~0,1%
if '%choice%'=='1' goto blizzard
if '%choice%'=='2' goto pserver
if '%choice%'=='3' goto end
ECHO "%choice%" is geen geldige optie.
ECHO.
goto start

:blizzard
@ECHO Officiele WoW opstarten...
pause
exit

:pserver
@ECHO Private server opstarten...
pause
exit

:end
@ECHO Einde script
pause
exit


Als je wel de goede labels ziet, dan zit er dus iets mis in je implementatie binnen zo'n goto-blok. Bijvoorbeeld dat al je 'IF Exist' en renames misgaan, omdat je current path verkeerd staat ofzo. Dat kun je zo debuggen met een zooi echo's en pauses :)

[ Voor 13% gewijzigd door sewer op 30-06-2008 23:01 ]


  • Zerora
  • Registratie: September 2003
  • Laatst online: 30-11 22:30

Zerora

Ik Henk 'm!

Topicstarter
De fout zit dan toch in het rename gebeuren, want de juiste echo's worden gewoon weergegeven.
Pff. Is daar geen makkelijkere oplossing voor?
Kan ik bijv. niet een txt-file aanmaken met inhoud (text) en die renamen naar een wtf-file wat WoW graag lust ofzo?

[ Voor 29% gewijzigd door Zerora op 30-06-2008 23:10 ]

Trans-life! :::: "All things change, whether from inside out or the outside in. That is what magic is. And we are magic too."


  • sewer
  • Registratie: November 2000
  • Laatst online: 13:51
Tuurlijk wel, absolute paden gebruiken. Stel dat je files staan in 'c:\program files\wow', dan wordt de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
@ECHO  OFF
Set Wowfolder="c:\program files\wow"
CLS
:start
@ECHO Welke WoW opstarten?
@ECHO -
@ECHO   [1] Officiele WoW
@ECHO   [2] Private server
@ECHO   [3] Einde script
@ECHO -
set choice=
set /p choice=Selecteer een optie.
if not '%choice%'=='' set choice=%choice:~0,1%
if '%choice%'=='1' goto blizzard
if '%choice%'=='2' goto pserver
if '%choice%'=='3' goto end
ECHO "%choice%" is geen geldige optie.
ECHO.
goto start

:blizzard
@ECHO Officiele WoW opstarten...
IF EXIST %Wowfolder%\blizzard_realmlist.wtf REN %Wowfolder%\realmlist.wtf %Wowfolder%\aniwow_realmlist.wtf
REN %Wowfolder%\blizzard_realmlist.wtf %Wowfolder%\realmlist.wtf
START wow.exe
IF NOT EXIST %Wowfolder%\blizzard_realmlist.wtf START wow.exe
exit

:pserver
@ECHO Private server opstarten...
IF EXIST %Wowfolder%\pserver_realmlist.wtf REN %Wowfolder%\realmlist.wtf %Wowfolder%\blizzard_realmlist.wtf
REN %Wowfolder%\pserver_realmlist.wtf %Wowfolder%\realmlist.wtf
START wow.exe
IF NOT EXIST %Wowfolder%\pserver_realmlist.wtf START wow.exe

:end
EXIT


Je hoeft alleen die 'Set Wowfolder'-regel aan te passen naar de echte folder.

edit:
Begrijp je code trouwens niet helemaal, je start na een rename wow.exe op, en als hij een .wtf niet kan vinden wil je nog eens dezelfde executable opstarten :?

[ Voor 14% gewijzigd door sewer op 30-06-2008 23:26 ]


  • Zerora
  • Registratie: September 2003
  • Laatst online: 30-11 22:30

Zerora

Ik Henk 'm!

Topicstarter
Ik denk dat ik weet wat er dus fout is in het script. Hij voert die hele rename niet uit.
Want als ik pserver zou opstarten moeten er de files blizzard_realmlist.wtf en realmlist.wtf overblijven in mn WoW dir, maar blizzard_realmlist.wtf wordt helemaal niet gemaakt. Andersom ook niet.
sewer schreef op maandag 30 juni 2008 @ 23:17:
edit:
Begrijp je code trouwens niet helemaal, je start na een rename wow.exe op, en als hij een .wtf niet kan vinden wil je nog eens dezelfde executable opstarten :?
offtopic:
In realmlist.wtf staat de url van de server die hij moet connecten. Die wil ik dus switchen als ik van officiele server naar private server wil gaan. Moet dus gewoon starten via wow.exe, officiele server of niet. ;)

[ Voor 46% gewijzigd door Zerora op 30-06-2008 23:31 ]

Trans-life! :::: "All things change, whether from inside out or the outside in. That is what magic is. And we are magic too."


  • sewer
  • Registratie: November 2000
  • Laatst online: 13:51
Dat begreep ik, maar je hebt 2 statements achter elkaar:
1) start wow.exe
2) IF NOT EXIST %Wowfolder%\pserver_realmlist.wtf START wow.exe

Nu hoort de tweede statement nooit uitgevoerd te worden als de tweede rename lukt, maar stel dat die niet lukt, wat wil je dan precies bereiken? Klopt het dat je dan 2x wow.exe wilt opstarten :?

  • Zerora
  • Registratie: September 2003
  • Laatst online: 30-11 22:30

Zerora

Ik Henk 'm!

Topicstarter
sewer schreef op maandag 30 juni 2008 @ 23:34:
Dat begreep ik, maar je hebt 2 statements achter elkaar:
1) start wow.exe
2) IF NOT EXIST %Wowfolder%\pserver_realmlist.wtf START wow.exe

Nu hoort de tweede statement nooit uitgevoerd te worden als de rename lukt, maar stel dat die niet lukt, wat wil je dan precies bereiken? Klopt het dat je dan 2x wow.exe wilt opstarten :?
Ik dacht zelf meer aan als tweede optie. Want er wordt wel een check uitgevoerd of bestand X bestaat, maar wat moet ie doen als die er dus niet is. Maar dat zal op deze wijze wel verkeerd gedacht zijn, denk ik zo.

Trans-life! :::: "All things change, whether from inside out or the outside in. That is what magic is. And we are magic too."


Verwijderd

Wat is er mis met eerst de 2 config files te deleten met DEL en daarna de benodigde op hun plek te zetten met copy ?

  • sewer
  • Registratie: November 2000
  • Laatst online: 13:51
Volgens mij kan die laatste statement er gewoon uit. Ik zou als ik jou was mijn code met die absolute paden gewoon testen zonder die 'start wow' regel, en kijk even handmatig of die realmlist.wtf en die aniwow_realmlist.wtf/blizzard_realmlist.wtf goed zijn aangemaakt. Als dat eenmaal werkt, dan voeg je die 'start wow'-regels weer toe.

[ Voor 19% gewijzigd door sewer op 30-06-2008 23:47 ]


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Ten eerste: waarom zo moeilijk doen met batch? Neem WSH of PS als je toch nog moet leren. Batch gaat dood.
Ten tweede: waarom zo moeilijk doen met rename? Zeker als je bedenkt dat je "transactie" kan mislukken door een reboot, crash of ctrl-c halverwege en je opeens geen doelbestand meer hebt - zodat je logging in moet gaan bakken. Kopieer blind over het bestaande file heen, het maakt niet uit wat er stond.

Titelaanpassing, zdd Vista in de titel komt.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Zerora
  • Registratie: September 2003
  • Laatst online: 30-11 22:30

Zerora

Ik Henk 'm!

Topicstarter
Ik heb het nu bijna voor elkaar door het rename proces te vervangen door copy/delete dingetje.

Als alles werkt (vanavond of morgen) dan post ik het resultaat wel.

[ Voor 3% gewijzigd door Zerora op 01-07-2008 23:54 ]

Trans-life! :::: "All things change, whether from inside out or the outside in. That is what magic is. And we are magic too."

Pagina: 1