Come esportare e importare variabili d'ambiente in Windows?


95

Ho trovato difficile mantenere sincronizzate le mie variabili di ambiente su macchine diverse. Voglio solo esportare le impostazioni da un computer e importarle su altri.

Penso che dovrebbe essere possibile, ma non so come farlo. Qualcuno può aiutarmi? Grazie.

Risposte:


121

È possibile utilizzare RegEdit per esportare le seguenti due chiavi:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

HKEY_CURRENT_USER\Environment

Il primo set sono le variabili di ambiente di sistema / globali; il secondo insieme sono variabili a livello di utente. Modificare secondo necessità e quindi importare i file .reg sulla nuova macchina.


2
esegui il programma regedit, evidenzia i tasti in questione e poi usa l'opzione "file -> esporta" quindi salvalo come file
Silvertiger

l'importazione viene eseguita semplicemente facendo doppio clic sul file .reg pur avendo i permessi di amministratore.
grazie a

NOTA: questo non ottiene tutte le variabili d'ambiente (EV)! Ho appena eseguito un percorso del set di comandi e ho incasinato tutto il mio EV. Sono andato a questo registro e c'erano solo i veicoli elettrici originali. Ho eseguito un ripristino del sistema e ho riportato tutti i miei EV mancanti nella var PATH. Questo registro contiene solo pochi EV necessari, ma non alcun EV del programma né alcun percorso impostato manualmente. ATTENZIONE! Su una riga di comando: echo path> mybackup.txt o set> mybackup.txt per l'intero backup su TUTTE le variabili / percorsi e TUTTE le vars / percorsi di sistema.
ejbytes

@ejbytes Questo copia le variabili globali che hai impostato, ma probabilmente è meglio esportarle con la CLI invece che attraverso il registro.
Alexander

88

Vorrei utilizzare il comando SET dal prompt dei comandi per esportare tutte le variabili, piuttosto che solo PATH come consigliato sopra.

C:\> SET >> allvariables.txt

Per importare i variabili, si può utilizzare un semplice ciclo:

C:\> for /F %A in (allvariables.txt) do SET %A

11
Come si importano nuovamente tutti i file Env esportati. Vars. da allvariables.txt
Ash

Molto bella. Ho appena perso tutte le mie variabili di percorso facendo un set di percorsi errato e ho dovuto eseguire un ripristino del sistema. Fortunatamente ho avuto un recente aggiornamento a partire da oggi in precedenza. Ho appena eseguito un backup con questo comando. Bello. Quella soluzione di registro contiene solo le variabili originali, ma niente che "tu" (come dice un programmatore per le nuove build) creato o qualsiasi nuova installazione creata.
ejbytes

1
In Windows 7 a 64 bit, se sono presenti due variabili con lo stesso nome a livello di utente e di sistema, questo comando dà la precedenza alla variabile a livello di utente e omette quella di livello di sistema. Questo comportamento ha senso, ma ho pensato che potrebbe valere la pena menzionarlo nel caso in cui qualcuno si aspettasse il set completo da ogni tipo di variabile.
GoldDragonTSU

1
questo comando ha funzionato:set > "C:\Users\xx\Desktop\envir variable.txt"
JinSnow

1
Per rispondere ad Ash, puoi usare un semplice ciclo for nel prompt di cmd per importare nuovamente tutte le variabili:for /F %A in (allvariables.txt) do SET %A
Gabriel

17

Per esportare le variabili utente, apri un prompt dei comandi e usa regedit con / e

Esempio :

regedit /e "%userprofile%\Desktop\my_user_env_variables.reg" "HKEY_CURRENT_USER\Environment"

13

Combina le risposte di @vincsilver e @jdigital con alcune modifiche,

  1. esportare .regnella directory corrente
  2. aggiungere il segno della data

codice:

set TODAY=%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%

regedit /e "%CD%\user_env_variables[%TODAY%].reg" "HKEY_CURRENT_USER\Environment"
regedit /e "%CD%\global_env_variables[%TODAY%].reg" "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

L'output vorrebbe:

global_env_variables[2017-02-14].reg
user_env_variables[2017-02-14].reg

3
la variabile TODAY dipende da % DATE% che dipende dalle preferenze delle impostazioni internazionali di Windows. Il comando precedente non funziona per l'India. Funziona -> imposta TODAY =% DATE: ~ 4,2% -% DATE: ~ 7,2% -% DATE: ~ 10,4%
Rakesh N

5

È possibile accedere alle variabili di ambiente dalla riga di comando o nel registro.

Riga di comando

Se vuoi una variabile d'ambiente specifica, digita semplicemente il nome di essa (ad esempio PATH), seguito da a >, e il nome del file in cui scrivere. Quanto segue scaricherà la variabile d'ambiente PATH in un file chiamato path.txt.

C:\> PATH > path.txt

Metodo di registro

Il registro di Windows contiene tutte le variabili d'ambiente, in posti diversi a seconda del set che stai cercando. È possibile utilizzare i comandi di importazione / esportazione del registro per spostarli sull'altro PC.

Per le variabili di sistema:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Per le variabili utente:

HKEY_CURRENT_USER\Environment

1
Sulla mia macchina, PATH> (o PATH >>) ha restituito un file di testo vuoto, mentre SET >> funzionava. Windows 7 x64 bit.
PatrickT

Ha funzionato per me su Win7x64. Non sono sicuro di quali siano i requisiti.
Kissaki

Da quale cartella esegui questo comando? Il mio ha detto che non riuscivo a trovare il percorso.
Azurespot

2

Il mio metodo preferito per farlo è scriverlo come uno script batch per combinare sia le variabili utente che le variabili di sistema in un singolo file di backup in questo modo, creare un environment-backup.batfile e inserirlo:

@echo off
:: RegEdit can only export into a single file at a time, so create two temporary files.
regedit /e "%CD%\environment-backup1.reg" "HKEY_CURRENT_USER\Environment"
regedit /e "%CD%\environment-backup2.reg" "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

:: Concatenate into a single file and remove temporary files.
type "%CD%\environment-backup1.reg" "%CD%\environment-backup2.reg" > environment-backup.reg
del "%CD%\environment-backup1.reg"
del "%CD%\environment-backup2.reg"

Questo crea environment-backup.regche puoi usare per reimportare le variabili d'ambiente esistenti. Questo aggiungerà e sovrascriverà nuove variabili, ma non eliminerà quelle esistenti :)


2

Ecco il mio metodo PowerShell

gci env:* | sort-object name | Where-Object {$_.Name -like "MyApp*"} | Foreach {"[System.Environment]::SetEnvironmentVariable('$($_.Name)', '$($_.Value)', 'Machine')"}

Cosa fa

  1. Raccoglie tutte le variabili d'ambiente
  2. Li filtra
  3. Emette il PowerShell formattato necessario per ricrearli su un'altra macchina (presume che siano tutti impostati a livello di macchina)

Quindi, dopo averlo eseguito sulla macchina di origine, trasferisci semplicemente l'output sulla macchina di destinazione ed esegui (prompt elevato se impostato a livello di macchina)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.