[Alg] Met batchbestand registersleutels maken?*

Pagina: 1
Acties:
  • 350 views sinds 30-01-2008
  • Reageer

  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
1. Is het mogelijk om met een batchbestand registersleutels te maken. Ik ben namelijk nu bezig om mijn data te rippen... en daar horen dus soms ook registersleutels bij. Nou leek het me handig om dit in een batch bestand te doen... Ik zag al ergens een regedit4 voorbijkomen.. maar of dat in een batchbestand zit weet ik niet... Als ik een reg bestand in een txt omzet kan ik hem gewoon bewerken maar dan staat er wel dat gedoe van windows bovenaan:
"Windows Registry Editor Version 5.00"
Moet ik dit dan laten staan er daar dan regedit4 bovenzetten. Ik heb winXP en als ik dat weghaalde en er regedit4 bovenzette, deed ie het niet...
2. Als er in het register bij waarden paden worden opgegeven.. komen ze altijd met twee \\ in plaats van één. Als ik dan dus een backup maak, staat er bijvoorbeeld D:\\Data\\Prive voor de map D:\Data\Prive... maar op mijn andere pc ... waar onder andere mijn data naar gekopieerd wordt dmv een backup heeft helemaal geen D partitie.. (wel een cd-rom speler die D heet). Hoe kan ik het maken dat hij een die waarden (het zijn zeer veer sleutels) allemaal verwijst naar de folder waar het bestand (bijv het batch bestand zelf) in staat. Als dat al kan.. dan zit ik ook nog met de submappen.... :/
Tja...

  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Een paar tips, de rest mag je zelf uitzoeken (of van anderen horen):

1 regel naar een bestand schrijven:
echo hallo > bestand.reg

meerdere regels naar een bestand schrijven:
echo hallo > bestand.reg
echo nog meer groeten >> bestand.reg

variabelen in batch:
%variabelenaam%

alle systeemvariabelen opvragen:
set

het huidige pad weergeven:
echo %CD%

  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
:'( .... jezus.... wat mot ik hier nou weer mee.... dus ik kan niet met een batch bestand registersleutels aanmaken :/ :?

Examples?!!?

[ Voor 9% gewijzigd door dj_tjerk op 27-05-2003 19:36 ]


  • Zwelgje
  • Registratie: November 2000
  • Laatst online: 17-08 09:02
D.J. Tjerk schreef op 27 May 2003 @ 19:21:
:'( .... jezus.... wat mot ik hier nou weer mee.... dus ik kan niet met een batch bestand registersleutels aanmaken :/ :?
tuurlijk kan dat wel, alleen echte kenners gebruiken geen batchfile's maar verdiepen zich in kix32 scripting, daarmee kan je dat alles vrij gemakkelijk doen (ook registersleutels aanmaken/weghalen)

maar ja, je moet er wel zelf wat uitzoekwerk voor verrichten natuurlijk :) of moeten we het voorkauwen voor je :? :/

A wise man's life is based around fuck you


  • Mayco
  • Registratie: Augustus 2002
  • Laatst online: 04-09 10:55
start regedit op en exporteer zo je data, dan heb je een reg-filetje, dan maak je een bat filetje met de tips van hierboven, hierboven staat alles wat je nodig hebt hoor

  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
Ja.. maar dan is er één verschil.. dit is het 5e batchfiletje wat ik maak in mijn hele leven... (ik heb er nooit iets van gesnapt tot 3 dagen terug :/) .... dus waarschijnlijk weten jullie allemaal hoe dat zit... maar ik dus niet... ik snap dus niet waarom er bij waarden twee \\ ipv één \ komt... en van dat dat wegschrijven naar een reg bestand!??!?! :/ naja... ik ben zo ver gekomen (tja... nog steeds bezig...)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@echo off

goto stap1

:stap1
uharc x -t%cd% data1.uha
uharc x -t%cd% data2.uha
uharc x -t%cd% data3.uha
goto stap2

:stap2
del data1.uha /s /q
del data2.uha /s /q
del data3.uha /s /q
goto stap3

:stap3 
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\zzm]
"ZZM_FOLDER"="%cd%"


maar..... dan zijn er bij dat %cd% tussen de namen maar één backslash... en niet twee :/:?:
En ik wil ook zeker niet dat jullie het mij voorschotelen... zo onthoudt ik het natuurlijk niet.... Maar.. sommige dingen zijn dus nog nieuw voor mij :/ ... en daar heb ik iets meer uitleg bij nodig...
tuurlijk kan dat wel, alleen echte kenners gebruiken geen batchfile's maar verdiepen zich in kix32 scripting, daarmee kan je dat alles vrij gemakkelijk doen (ook registersleutels aanmaken/weghalen)
tja.. dat lijkt me ook wel leuk... "komen" daar dan exe files uit.... want ik kan nu ook bat files omzetten in exe files... maar... kix32... nog nooit van gehoord.. :?

[ Voor 34% gewijzigd door dj_tjerk op 27-05-2003 20:02 ]


  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

ok normaal gesprokne exporteer je die data naar een regfile .. dat had je al door
als je rechts klikt dan zie je ook edit ....... dan hoef je niet te renamen

normaal gesproken implementeer je die veranderingen door op het .reg file te dubbelklikken

Die paden veranderen is een apart verhaal maar volgens mij klinkt het als een eenvoudige find replace functie gebruiken daarvoor. die subpaden zijn waarchijnlijk allemaal hetzelfde. aleen de bron is anders toch ?

En als die f/r niet intelligent genoeg is zul je toch wat duidelijker moeten zijn.

in dos doe je:
regedit /s bla.reg

die /s zorgt dat ie geen vragen stelt

[ Voor 32% gewijzigd door Fish op 27-05-2003 20:49 ]

Iperf


  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
krijg je dan niet een probleem dat de registry backups van winXP niet geopend kunnen worden in Win98.... Er is dus geen mogelijkheid om in een batch bestand registersleutels aan te maken... met bijv %cd% erin.. en dat dat dan automatisch bijvoorbeeld D:\blablabla\ ...enz.. wordt... ??
Anders moet ik ff een andere mogelijkheid vinden.... is er niet een andere programmaatje :P

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

zwelgje had het over kix. heb je dat geprobeert ? if no then toch doen.

Iperf


  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Stel dat je een map hebt met twee bestanden, een batch-bestand en een programma:
"d:\test\doe_iets.bat"
"d:\test\dit_dus.exe"
Je wilt nu dat het batch-bestand ervoor zorgt dat iedere keer bij het opstarten het programma wordt uitgevoerd. Je gaat dan naar het register en voegt "d:\test\dit_dus.exe" toe aan "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" met als omschrijving "mijn programma". Je exporteert dit nu naar een .reg-bestand en kijkt hoe dit eruitziet:
code:
1
2
3
4
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"mijn programma"="d:\\test\\dit_dus.exe -een_switch -nog_een_switch"

om nu dit .reg bestand via het batch bestand te maken en te importeren moet doe_iets.bat de volgende inhoud hebben:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
rem myRegBestand is een tijdelijk bestand dat wordt gecreerd
rem myGecorrigeerdeWerkPad is de lokatie waarvandaan het batch-bestand wordt uitgevoerd
rem Gebruik voor deze lokatie nooit de root van een drive, maar altijd een submap.

set myRegBestand=%CD%\mijn_programma.reg
set myGecorrigeerdeWerkPad=%CD:\=\\%\\

echo Windows Registry Editor Version 5.00 > %myRegBestand%
echo . >> %myRegBestand%
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] >> %myRegBestand%
echo "mijn programma"="%myGecorrigeerdeWerkPad%dit_dus.exe -een_switch -nog_een_switch" >> %myRegBestand%

regedit /s %myRegBestand%

del /q %myRegBestand%


Ik hoop dat dit voorbeeld duidelijk genoeg is. Het vervangen van de "\" door "\\" gebeurt in de regel "set myGecorrigeerdeWerkPad=%CD:\=\\%\\". Als het pad bijvoorbeeld "d:\test" is dan wordt myGecorrigeerdeWerkPad "d:\\test\\".

  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
set myGecorrigeerdeWerkPad=%CD:\=\\%\\
Moet %CD niet %CD% zijn....\\

Anywayz... tnx... ik zal nog proberen dit alles op natuurlijk meer programma's toe te passen zodat ik het niet vergeet.. maar sommige dingen zijn me nog onduidelij.. als je zo aardig zijn om dat te beantwoorden zou ik je in de hemel prijzen :P
Dat "rem" ... dat snap ik niet.. en wordt set onthouden in andere batch bestanden en exe bestanden.. of alleen in het eigen...
Waarom MOET dat register ding in een submap... werkt het anders nie...?!?! :?:?

  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
%CD zou inderdaad %CD% moeten zijn, MAAR er staat %CD:\=\\%, oftewel myGecorrigeerdeWerkPad is het huidige pad waarin elke "\" door een "\\" is vervangen. Daarna wordt er ook nog "\\" aan toegevoegd. Als je dit nog duidelijker op wilt schrijven kun je ook dit doen:
code:
1
2
3
set myGeCorrigeerdeWerkPad=%CD%
set myGeCorrigeerdeWerkPad=%myGeCorrigeerdeWerkPad:\=\\%
set myGeCorrigeerdeWerkPad=%myGeCorrigeerdeWerkPad%\\

als %CD% gelijk is aan d:\test dan gebeurt er dus het volgende:
  • myGeCorrigeerdeWerkPad krijgt de waarde d:\test myGeCorrigeerdeWerkPad krijgt de waarde d:\\test myGeCorrigeerdeWerkPad krijgt de waarde d:\\test\\
Daarom moet alles ook in een submap staan, anders krijgt je namelijk het volgende:
  • myGeCorrigeerdeWerkPad krijgt de waarde d:\ myGeCorrigeerdeWerkPad krijgt de waarde d:\\ myGeCorrigeerdeWerkPad krijgt de waarde d:\\\\
rem is een afkorting van remark (opmerking) en kun je gebruiken om commentaar in je batch-bestand op te nemen. Alles wat achter rem staat wordt beschouwd als commentaar en doet dus niets. Het zorgt er alleen voor dat als je een jaar later wilt weten wat het batch-bestand doet, je dit in 1 minuut kunt lezen. Je kunt hiermee als het ware een "gebruiksaanwijzing" maken.

Het helpt trouwens nogal om commando's die je niet snapt/kent op een command-promt (DOS-venster) in te voeren met "-?" erachter, bijvoorbeeld "rem -?". Nog beter is het om de windows-help er eens op na te slaan. Ga naar Start -> Help, klik op Index, type rem, klik op display. Bij de "Related topics" kom je via "Windows 2000 Command Reference Main Page" en verder alles te weten wat je wilt.

set-variabelen zijn toegankelijk voor andere batch-bestanden als ze in hetzelfde "dos-venster" worden uitgevoerd. Als je dus twee batch-bestanden na elkaar aanklikt op je Desktop zijn de set-variabelen niet bewaard. Als je een "dos-venster" opent en meerdere batch-bestanden uitvoert kan het vierde batch-bestand de set-variabelen die je in de eerste drie batch-bestanden hebt gemaakt wel gebruiken. Als je dit laatste niet wilt moet je setlocal en endlocal gebruiken.

  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
ahh.... wow... dis duidelijk.. .alleen bij de paden van mijn sleutels... (dus als ik dat .reg in een .txt verander) hebben geen \\ op het eind.... :/ :? Betekent dat, dat ik dus niet \\ op het eind hoef te doen?? maar very very very much tnx for uitleg.... :D:D:D
echo Windows Registry Editor Version 5.00 > %myRegBestand%
echo . >> %myRegBestand%
Waarom moet er bij de "openingzin" maar één > %myregbestand% en niet twee..... En moeten al die echo's er voor....

[ Voor 33% gewijzigd door dj_tjerk op 29-05-2003 10:10 ]


  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Ik ga er weer even vanuit dat het pad "d:\test" is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
rem myRegBestand is een tijdelijk bestand dat wordt gecreerd
rem myGecorrigeerdeWerkPad is de lokatie waarvandaan het batch-bestand wordt uitgevoerd
rem Gebruik voor deze lokatie nooit de root van een drive, maar altijd een submap.

set myRegBestand=%CD%\mijn_programma.reg
set myGecorrigeerdeWerkPad=%CD:\=\\%\\

echo Windows Registry Editor Version 5.00 > %myRegBestand%
echo . >> %myRegBestand%
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] >> %myRegBestand%
echo "mijn programma"="%myGecorrigeerdeWerkPad%dit_dus.exe -een_switch -nog_een_switch" >> %myRegBestand%

regedit /s %myRegBestand%

del /q %myRegBestand%

Dit betekent "vertaald" het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
rem myRegBestand is een tijdelijk bestand dat wordt gecreerd
rem myGecorrigeerdeWerkPad is de lokatie waarvandaan het batch-bestand wordt uitgevoerd
rem Gebruik voor deze lokatie nooit de root van een drive, maar altijd een submap.

set myRegBestand=d:\test\mijn_programma.reg
set myGecorrigeerdeWerkPad=d:\\test\\

echo Windows Registry Editor Version 5.00 > d:\test\mijn_programma.reg
echo . >> d:\test\mijn_programma.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] >> d:\test\mijn_programma.reg
echo "mijn programma"="d:\\test\\dit_dus.exe -een_switch -nog_een_switch" >> d:\test\mijn_programma.reg

regedit /s d:\test\mijn_programma.reg

del /q d:\test\mijn_programma.reg

Wat dus het volgende doet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1. Laat de uit te voeren opdrachtregels niet op het scherm zien
2. Commentaarregel met uitleg over de variabele myRegBestand
3. Commentaarregel met uitleg over de variabele myGecorrigeerdeWerkPad
4. Commentaarregel met uitleg over de vereisten voor een goede werking

6. Maak een variabele genaamd "myRegBestand" met als waarde "d:\test\mijn_programma.reg"
7. Maak een variabele genaamd "myGecorrigeerdeWerkPad" met als waarde "d:\\test\\"

9. Stuur de uitvoer van "echo Windows Registry Editor Version 5.00" (Windows Registry Editor Version 5.00 dus) niet naar het scherm, maar naar d:\test\mijn_programma.reg als nieuw bestand
10. Stuur de uitvoer van "echo ." (Een lege regel) niet naar het scherm, maar naar d:\test\mijn_programma.reg als toevoeging
11. Voeg op dezelfde manier "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]" toe
12. Voeg op dezelfde manier "d:\\test\\dit_dus.exe -een_switch -nog_een_switch" toe

14. Voeg het gemaakte registerbestand zonder dat te vragen toe aan het register

16. Verwijder het gemaakte registerbestand zonder dat te vragen


Let op: Als je de "\" als waarde van een sleutel wilt toevoegen aan het register zul je hem in het .reg-bestand als "\\" moeten opnemen. Vergelijk de "\" in regel 11 met de "\\" in regel 12. Om misverstanden hiermee te voorkomen kun je het beste eerst de sleutel handmatig aan het register toevoegen, dan exporteren naar een .reg-bestand en de geproduceerde tekst namaken via je batch-bestand.

  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
Jaja... ik heb ff getest... het begint te werken... alleen de sleutels in de mappen zijn er nog niet :/ ... ff kijken... voorbeeldje....
code:
1
2
echo [HKEY_LOCAL_MACHINE\SOFTWARE\zzm] >> %myRegBestand%
echo "zzm_ch"=dword:00000002 >> %myRegBestand%


(gewoon uit dat register ding gehaald... dit stond er dus... zonder die echo en myregbestand natuurlijk)... o.a. deze sleutel komt er niet in.... :/ Anyone knows why...?? :?

edit:
Ik heb een paar sleutels (ook die hierboven) weer zelf in een zelfgemaakt reg bestandje gezet (natuurlijk zonder echo's en %myRegBestand% ... die deed het gewoon :/ Nou vind ik het vreemd....

[ Voor 26% gewijzigd door dj_tjerk op 29-05-2003 11:50 ]


  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Als ik dit doe dan werkt het gewoon (zelf even aanpassen met variabelen):
code:
1
2
3
4
5
6
7
@echo off
echo Windows Registry Editor Version 5.00 > voorbeeld.reg
echo.  >> voorbeeld.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\zzm] >> voorbeeld.reg
echo "zzm_ch"=dword:00000002 >> voorbeeld.reg
regedit /s voorbeeld.reg
del /q voorbeeld.reg

Post eens wat meer code (tussen [code][/code] graag), welk OS je gebruikt en controleer of je wel ergens "set myRegBestand=...." hebt staan. Je kunt het "del /q %myRegBestand%" ook even verwijderen uit je Batch-bestand zodat je in dit bestand kunt kijken of er ergens foutjes in zitten.

[ Voor 7% gewijzigd door Arnaud op 29-05-2003 12:34 ]


  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
Ik heb ff getest.. en ben er achter gekomen dat het eraan ligt in wat voor folder die staat... Als ik het bestandje in "E:\temp" zet.... dan doet ie het gewoon... maar zodra ik het in nog een folder lager zet.. bijv "E:\temp\register test" dan doet ie het niet meer... Dan maakt hij ook geen .reg bestand aan... hoe komt dit :?
Als jij dit nou ook even probeert... dan kunnen we zien of het aan mijn pc ligt.... (or something)

[ Voor 95% gewijzigd door dj_tjerk op 29-05-2003 15:44 ]


  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Je mag best submappen gebruiken (sterker nog, dit moet zelfs), maar dan moet je geen spatie in de mapnaam gebruiken. Als je persé wel een spatie in de mapnaam wilt gebruiken zul je dit:
code:
1
2
set myRegBestand=%CD%\mijn_programma.reg
echo "mijn programma"="%myGecorrigeerdeWerkPad%dit_dus.exe -een_switch -nog_een_switch" >> %myRegBestand%

moeten vervangen door dit (ongetest)
code:
1
2
set myRegBestand="%CD%\mijn_programma.reg"
echo "mijn programma"="""%myGecorrigeerdeWerkPad%dit_dus.exe"" -een_switch -nog_een_switch" >> %myRegBestand%

Ik raad je aan om een underscore (_) te gebruiken in plaats van een spatie.

  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
TNX!!!
code:
1
set myRegBestand="%CD%\mijn_programma.reg"
Dit was al genoeg... nu ff testen op een andere pc... en hopen dat het werkt... ik meld wel als het werkt.. (kan er een slotje op.. :/)

  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
Nog één vraagje.. bij mij werkt het dus :*) :*) :*) ... maar werkt het ook onder windows 98.. (met dat Windows Registry Editor 5.00) ..... Of moet ik dan een andere codering gebruiken :/ :? Is er met de autosets in windows ook nog een bepaalde set voor het start menu in all users....??

[ Voor 21% gewijzigd door dj_tjerk op 30-05-2003 09:28 ]


  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Probeer het eens. Als het niet werkt dan voeg je een gewenste sleutel toe aan het register op een machine met windows 98, exporteer je die en kijk je hoe deze verschilt van je Windows 2000 versie. Als hier inderdaad verschillen tussen zitten kun je twee dingen doen:

1. Twee batch-bestanden maken (makkelijk, maar lastig onderhoudbaar)
2. Één batch-bestand uitbreiden door met "if ... else..." en "ver" of %OS% te werken (moeilijker, maar als er iets verandert in je batch-bestand hoef je dat maar 1 keer te doen)

Een klein voorbeeldje voor een if... else..., de rest kun je wel vinden via if /? of de Windows help:
code:
1
2
3
4
5
6
@echo off
if %OS%==Windows_NT (
  echo modern
) else (
 echo oud
)


Als je een shortcut toe wilt voegen aan het start menu moet je dat niet via het register doen, maar via een ".lnk"-bestand in %ALLUSERSPROFILE%\start menu (let op de spatie). Dit zal in praktijk bijna altijd "C:\Documents and Settings\All Users\Start Menu" zijn. Wat je precies bedoelt met autosets weet ik niet, maar als dit niet is wat je bedoelt dan hoor ik het wel.

[ Voor 23% gewijzigd door Arnaud op 30-05-2003 09:57 . Reden: start menu gedeelte toegevoegd ]


  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
Ik ben er nu achter dat je met een batch bestand GEEN snelkoppelingen aan kunt maken... en daarom heb ik een programma gedownload die via de commandpromt dat wel kan... en daar heb ik in mijn batch bestand dus weer commandlines ingezet zodat hij dat ook automatisch zou doen... eerst deed hij het weer niet, maar (woeei.. ik begin te onthouden) door jouw tip met de aanhalingstekens "herkende" hij opeens wel de spaties en woppa.... Ik zal straks even testen op windows 98 of 95 ... moet ik anders dan precies hetzelfde doen , maar dan bijv regedit4 i.p.v die regel met Windows Registry Editor 5.00 ... En is in het engels bijv %ALLUSERSPROFILE%\Start Menu\Programma's niet iets anders... :/ ... Ik zou best wel een batch bestand apart voor win9x en eentje voor xp/2000 willen maken... maar niet apart voor alle talen :/

Is er ook nog een code om de gemaakte registersleutels te verwijderen...?
Het liefst met bevestigings vraag... (1 bevestigingsvraag... en niet bij allemaal..)

[ Voor 24% gewijzigd door dj_tjerk op 30-05-2003 10:34 ]


  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Hoofdregel i.v.m. werken met register-imports: Voeg iets eerst handmatig toe op de machine waar je dit later automatisch wilt laten gebeuren. Exporteer daarna naar een .reg-bestand en kijk hoe het moet.

Dan de praktijk: Ik vermoed dat je inderdaad alleen de eerste regel moet veranderen in Regedit4. Als je mijn tip over if %OS%.. else toepast dan lijkt me dit verder geen probleem. In het Nederlands en Engels verschillen de namen van mappen inderdaad. Ook hiervoor kun je if... else... statements gebruiken, maar dan zul je wel trucs moeten uithalen met bijvoorbeeld if exist (zie if /?). Ik weet niet meer uit mijn hoofd hoe je gemaakte registersleutels kunt verwijderen, maar ik dacht dat het een kwestie van een minstreepje was (bijvoorbeeld [-HKEY_LOCAL_MACHINE\SOFTWARE\zzm]). Als je dan ook nog 1 bevestigingsvraag wilt zul je dit als volgt moeten doen:
Vraag aan de gebruiker of hij alle verwijderingen automatisch wil laten uitvoeren,
Bewaar zijn antwoord in een variabele,
Gebruik een if...else... statement om te bepalen of je een regedit /s bestandje.reg laat uitvoeren of dat je regel voor regel laat importeren (bestandje00000.reg, bestandje00001.reg, etc) met een regedit bestandje00000.reg.

Als je al dit soort "extra's" echt wilt zul je toch eens verder moeten kijken dan de standaard batch-commando's. Je kunt een aantal tools uit de Windows Resource kit dan goed gebruiken, maar ook wscript of cscript kunnen erg behulpzaam zijn. Ik denk dat je nu wel snapt waarom de meeste bedrijven 1 uniform platform hebben qua software (bijvoorbeeld iedereen Windows 2000 Engels).

  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
code:
1
2
3
4
5
6
@echo off
if %OS%==Windows_NT (
  echo modern
) else (
 echo oud
)

Moet die code echt zo opgeschreven worden?? ik vind die haakjes maar vreemd staan...

Kan ik het ook maken met if... goto stap? .... else goto stap?

[ Voor 54% gewijzigd door dj_tjerk op 30-05-2003 11:47 ]


  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Als je "if /?" had uitgevoerd had je geweten dat dit niet hoeft. Als je iets simpels doet kun je het ook zo opschrijven:
code:
1
if %OS%==Windows_NT echo modern else echo oud

Als je iets ingewikkelders wilt moet je het met de haakjes doen, bijvoorbeeld:
code:
1
2
3
4
5
6
7
if %OS%==Windows_NT (
  echo iets
  echo nog iets
) else (
  echo iets anders
  echo nog iets anders
)

Al met al krijg ik de indruk dat dit misschien iets te hoog is gegrepen voor je. Ik kan me dat trouwens goed voorstellen als je nog nauwelijks eerder iets hebt gedaan met batch-bestanden. Zeker als je gelijk al wordt geconfronteerd met variabelen, redirection, conditional flow en systeemcompatibiliteiten.

Ik hoop dat je dit niet alleen beschouwd als een manier om "iets gedaan te krijgen", maar ook als een introductie programmeren. Het nadeel aan programmeren is dat in het begin 95% van je tijd gaat zitten in het lezen van handleidingen en code-voorbeelden. Ik zou je graag vertellen dat dit anders wordt in de loop van de tijd, maar na vijf jaar was ik nog steeds 75% van mijn tijd daaraan kwijt. Probeer dus eerst zoveel mogelijk zelf uit te zoeken (/?, F1, RTFM, msdn.microsoft.com, etc) en te testen, maar aarzel niet om het op GOT te vragen als je echt vastloopt.

  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
Ouch..... das niet handig:

code:
1
2
3
REGISTEREDITOR 

Kan \regsetup.reg niet importeren: het opgegeven bestand is geen registerscript. U kunt alleen registerbestanden importeren


Das dus de foutmelding die ik krijg in win98... bij winxp gaat ie PERFECT... maar bij win98 zie hem ook geen reg bestand aanmaken.. ik heb al geprobeerd met alleen het aanmaken en al het andere weg.. maar ik zie nog steeds niks verschijnen....En als ik alle echo. , echo , en >> %myRegBestand% weghaal.. en ik haal de andere opdrachtregels (behalve de sleutels ) weg.. dan doet ie het gewoon..

  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
edit:
dubbele post :/

[ Voor 95% gewijzigd door dj_tjerk op 30-05-2003 18:15 ]


  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
Onder Windows 98 bestaat de variabele %CD% helemaal niet. Ik heb zo 1-2-3 geen kant en klare oplossing hiervoor. Wat je kunt doen is de output van het Dos-commando "CD" toewijzen aan een variabele genaamd %CD%, maar hoe je de output van een commando aan een variabele toewijst schiet me nu even niet meer te voorschijn (Batch is ondertussen een beetje weggezakt).

  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
mmz
sry voor de dubbele post... ik wist niet dat er al zo snel een 2e pagina kwam... :/ Ik zal zelf ook nog ff kijken naar de CD .... (eigenlijk vind ik het wel funny... D.J. Tjerk.. --> Arnaud ----> D.J. Tjerk ---> Arnaud... enz.)

[ Voor 27% gewijzigd door dj_tjerk op 30-05-2003 21:06 ]


  • dj_tjerk
  • Registratie: Januari 2003
  • Laatst online: 21-03 15:46
Volgens mij ligt het probleem bij het feit dat ik niet weet hoe ik in command.com (jaja.. de cmd van win98 ... d8 ik :/ :?) een variabele kan opvragen.. ik kan zoveel setten als ik wil.. maar opvragen.. en dan vooral het probleem met de MyGeCorrigeerdeWerkpad.. en dat deel dat het \ --> \\ ... nou nog ff erachter komen hoe het werkt.. als ik bijv (gewoon los... zonder batch bestand maar gewoon intyp.. in de msdospromt)
code:
1
2
3
4
5
 C:\Windows>set pp=cd
C:\Windows\%pp%
C:\Windows

C:\Windows>

Maar als ik dat doe met dat \ --> \\ gedeelte.. denk ik dat hij dat niet helemaal snapt...

  • Arnaud
  • Registratie: Mei 2000
  • Laatst online: 02-08 18:07
hier kun je een behoorlijk uitgebreide batch-guide vinden. Zoals je merkt is er onder het oppervlakte net zoveel verschil tussen Windows 2000/XP als aan de buitenkant. Systeemcompatibiliteit is één van de allerlastigste dingen bij het programmeren. Ik heb nog even getest op een Windows 98 machine met dit als resultaat:

set pp=cd (pp krijgt de waarde "cd", niet de waarde van het CD-commando
%pp% (voert de waarde van pp uit als commando. Ik denk dat je echo %pp% bedoelt)
set pp=%pp:\=\\% (geeft een syntax error. Met ":" vervangen wordt niet ondersteund)

Ik ben benieuwd of het lukt om wat je wilt helemaal te automatiseren. Misschien is het makkelijker om in je script de gebruiker te vragen om de gewenste set-variabelen even in te typen. Automatisering is een doel, geen middel (Toch ;))

Ik vraag me af waarom er verder geen dos/batch-guru's reageren. Het lijkt me sterk dat er op GOT verder niemand rondloopt die hier iets vanaf weet. Natuurlijk zijn PHP/ASP/JAVA/.NET tegenwoordig "hot" en wordt batch/shell-scripting als iets ouderwets gezien, maar een 1-on-1 topic komt op GOT haast nooit voor.
Pagina: 1