Is there a way to set environment variables for a single command on Windows like ENVVAR=abc command on Unix?
Variables set by set command on Windows seem to remain for the following commands, but this is not what I want.
1 Answer
Is there a way to set environment variables for a single command?
From the current cmd shell:
You have to clear the variable yourself.
set ENVVAR=abc && dir & set ENVVAR= From a batch file:
You can use setlocal and endlocal.
@echo off setlocal set ENVVAR=abc && dir endlocal Use a child cmd shell:
You can use cmd /c to create a child shell.
The variable is set in the child shell and doesn't affect the parent shell (as pointed out in a comment by jpmc26).
cmd /C "set ENVVAR=abc && dir" Further Reading
- An A-Z Index of the Windows CMD command line - An excellent reference for all things Windows cmd line related.
- cmd - Start a new CMD shell and (optionally) run a command/executable program.
- endlocal - End localisation of environment changes in a batch file. Pass variables from one batch file to another.
- redirection - Redirection operators.
- set - Display, set, or remove CMD environment variables. Changes made with SET will remain only for the duration of the current CMD session.
- setlocal - Set options to control the visibility of environment variables in a batch file.