Batch File Scripting Så här exporterar, hittar och ersätter, och återimporterar en registernyckel (XP, Win2k3, Vista, Windows 7)

Detta recept är utformat för de mer operativa systemkunniga personerna och för dem som arbetar i en företagsinstallation för appdistribution. Många gånger när du jobbar i IT och i ett implementeringslag för app kan du hitta situationer där du behöver antingen hitta en registernyckel och hitta en nyckel och ersätta med en ny post. Men ibland finns det fall där du känner till den viktigaste registerinmatningsnyckeln, men är inte säker på vilka poster som anges nedan kan det behöva ändras. Låt oss hitta en lösning!


VARNING:
Om du inte är bekväm med kommandotolken, batchfilerna och Windows-registret, Var försiktig när du testar / använder den här batchfilen. Jag skulle personligen rekommendera att testa på en virtuell maskin (dvs. Virtualbox, gratis; VMWare Workstation) eller en maskin du inte bryr dig om. Du har blivit varnad. 🙂

OK, först och främst. Låt oss börja med de två bitarna av kod. För att använda detta, kopiera och klistra in dem i Anteckningar och spara sedan med de angivna namnen (var noga med att byta från txt-filer till Alla filer i dialogrutan Spara dialogrutan)

Filnamn: Replace.bat (via dostips.com)

@echo av
SETLOCAL ENABLE EXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION
REM BatchSubstitude - analyserar en fillinje för rad och ersätter en substring "
REM-syntax: BatchSubstitude.bat OldStr NewStr-fil
REM OldStr [in] - sträng som ska ersättas
REM NewStr [in] - sträng som ska ersättas med
REM-fil [i] - fil som ska analyseras
REM $ ändrats 20100115
REM $ källa http://www.dostips.com
om "% ~ 1" == "" findstr "^ ::" "% ~ f0" & GOTO: EOF
för / f "tokens = 1, * delims =]" %% A i ("" typ% 3 | find / n / v "" "') gör
ställa in "line = %% B"
om definierad linje (
samtalsuppsättning "line = echo. %% line:% ~ 1 =% ~ 2 %%"
för / f "delims =" %% X i ("" echo. "%% line %%" "') gör %% ~ X
) ELLER eko.
)

___________________________

Filnamn: MainApp.bat


@echo av
REM Författare: seamonkey420
REM http://blogs.tech-recipes.com/seamonkey420
REM
REM 3/15/2010
REM Denna sats kommer att analysera och uppdatera registernycklar för Dictation-modulen
REM Här är vad stegen gör:
REM 1. Exportera registernyckeln till en viewFolder.txt-fil
REM ADD REGISTRY ANGÅ TILL EXPORT (dvs formaterad som: HKEY_CURRENT_USER \ Control Panel \ Mouse)
REM 2. Typ av visningen av filen och hittar sedan en post som innehåller "Ja" och ersätter med "Nej" och sparar till nya key.txt-fil
REM 3. Vi echo krävs registerversion i ny regfil
REM 4. Då echo sektionen som värden kommer att gå under
REM 5. Byt servernamn från poster med hjälp av en separat Replace.bat-fil och lägg sedan till (med tillstånd av www.dostips.com) till newkeys.reg-filen
REM 6. Slutligen importeras nya registerposter i newkeys.reg-filen till registret
REM 7. Slutligen tas all tempfil bort


Ange rkey = HKEY_CURRENT_USER \ Kontrollpanel \ Mus
Ange findv = "Ja"
set replacev = "No"
Ange registryver = Windows Registry Editor Version 5.00
echo "Ändrar registreringsvärden, var vänlig vänta ..."
REG EXPORT "% rkey%" viewFolder.txt
skriv viewFolder.txt | hitta% findv%> keys.txt
echo% registryver%> newkeys.reg
echo [% rkey%] >> newkeys.reg
CALL Replace.bat% findv%% replacev% keys.txt >> newkeys.reg
reg importera newkeys.reg
del / q newkeys.reg viewFolder.txt keys.txt
utgång

______________________

För att använda detta måste du redigera MainApp.bat (högerklicka på det och klicka på Redigera, Anteckningsblock öppnas)

I grund och botten kommer MainApp.bat att fråga en registernyckel som du definierar i variabeln "set rkey =" (i min satsfil använder jag två musinställningar som ett exempel)

Då kommer det att exportera nyckeln och det undernycklar till en fil som heter viewFolder.txt

Använd sedan FIND-kommandot för att söka i filen ViewFolder.txt för värdet i "findv =" -variabeln (i min batchfil, Ja) och exportera sedan dessa värden till en ny fil som heter keys.txt

Vi skapar då vår registerfil som kommer att importeras igen med de nya värdena genom att echo den nödvändiga registret versionen till en fil som heter newkeys.reg

Vi lägger sedan till den registernyckel vi sökte under till newkeys.reg-filen (i min batchfil, kontrollpanelens moue-nyckel)

Nu använder vi filen Replace.bat för att hitta nyckeln vi vill ersätta och ersätta den med den nya nyckeln och sedan lägga till den här filen i filen newkeys.reg.
Så vid denna tidpunkt har vi redo att importera registret med de nya värdena och använda regimporten för att importera den igen.
Slutligen rensar vi upp och tar bort newkeys.reg, viewFolder.txt och keys.txt-filer och avslutar vårt program.

OBS:
-Före sig för att vara ett administratörskonto för att köra eller kunna köra med förhöjda rättigheter (som med de flesta registerbaserade saker)
-Run som säker systemanvändare via Novell Zenworks att köra på en icke-administrators dator och få rätt nycklar om det är en CURRENT_USER-nyckel.
-Put REM framför en rad för att notera det och släpp det i sin tur från att springa.
-Lägg till en paus i slutet av batchfilen för att lämna kommandotolken upp och ändra även @echo av till @echo on (för debugging, testing)
-Du kan också använda andra systemvariabler i den här batchfilen
-Works på någon Windows-version XP och uppåt; Vista och Win7.