Discussion forum for all Windows batch related topics.
Moderator: DosItHelp
-
catalinnc
- Posts: 39
- Joined: 12 Jan 2015 11:56
#1
Post
by catalinnc » 30 Apr 2017 13:18
this is the batch (inspired by one of the posts by Aacini)...
Code: Select all
@echo off
setlocal disabledelayedexpansion
echo(test | (set /P "_line=" & set _)
set _
endlocal
pause
this is the result (win xp sp2)...
Code: Select all
_line=test
Environment variable _ not defined
Press any key to continue . . .
how comes that the variable %_line% vanishes outside the brackets?
how can i retain it outside the brackets (beside echoing it to a file)?
_
-
aGerman
- Expert
- Posts: 4678
- Joined: 22 Jan 2010 18:01
- Location: Germany
#2
Post
by aGerman » 30 Apr 2017 13:29
Basically this has nothing to do with the brackets. The reason is that every side of a pipe is executed in a newly created cmd.exe process. The new processes inherits the environment from the parent batch process. But that doesn't work vice versa, which means that child processes can't change the environment of their parent.
Steffen