Ho bisogno di usare una riga di comando cmd.exe (viene chiamato cmd.exe dallo strumento gyp build) per determinare se una variabile di ambiente è definita o meno. Come posso fare questo? Sto bene assumendo che il valore della variabile non contenga virgolette singole o doppie, ma non può assumere che le estensioni dei comandi siano abilitate.Verificare se una variabile di ambiente è definita senza estensioni di comando e senza utilizzare un file batch?
ho provato la seguente, che funziona alla grande in un file .bat, ma fallisce quando digitate direttamente sulla riga di comando:
IF "%UNDEFINED%" == "" (echo yes)
Quando quella linea esatta è in un file .bat ed eseguito, Vedo yes
come output. Quando lo digito sulla riga di comando, l'output è vuoto. Sto testando questo su Windows XP SP3, anche se il mio collega vede gli stessi risultati su Windows 7. Questo è il metodo suggerito da http://support.microsoft.com/kb/121170 e http://www.robvanderwoude.com/battech_defined.php. Non voglio usare IF DEFINED UNDEFINED (echo yes)
perché non funzionerà se le estensioni dei comandi sono disabilitate.
La risposta più votata nel seguente post mi ha portato a credere che questo problema sia legato al modo in cui l'espansione percentuale viene gestita in modo diverso nel "CmdLineParser" rispetto a "BatchLineParser", ma non mi ha ancora portato a una soluzione: How does the Windows Command Interpreter (CMD.EXE) parse scripts?
Alla riga di comando è sufficiente utilizzare il comando 'SET' per verificare se una variabile è definita. – RBarryYoung
Come utilizzarlo in un controllo condizionale? Ho provato: 'IF (SET UNDEFINED) (echo yes)' e ottenuto 'UNDEFINED' era inaspettato in questo momento.' – Johann
Perché dovresti usare l'IF sulla riga di comando? Basta guardarlo e prendere l'azione appropriata. – RBarryYoung