创造"记忆"在批处理文件中

时间:2017-06-10 16:54:50

标签: batch-file memory temp

我不确定如何在这里说出我的问题。但是,例如,假设我有一个批处理文件:

@echo off

echo test > text.txt
set example_var=<text.txt

我知道这段特定的代码是多余的,因为你可以设置&#34; example_var&#34;等于&#34; test&#34;,但我的问题是如何创建&#34;记忆&#34; (如文本文档中的数据一样)在批处理内部?

这样的事情:

@echo off

echo test 0>&1
set example_var=<&1

基本上我只是想避免创建临时文本文档来保存信息。我相信我之前在这个网站上找到了一个例子,但是我找不到它。

编辑:

情况就是这样:

(%systemroot%\System32\WindowsPowerShell\v1.0\powershell.exe .\Code.ps1) | find "::/kl" | set /p code

我希望%systemroot%\System32\WindowsPowerShell\v1.0\powershell.exe .\Code.ps1find "::/kl"的输出成为set /p code的输入,最终设置一个文本字符串放入变量code.

2 个答案:

答案 0 :(得分:2)

您的管道方法将无法为当前脚本设置变量,因为管道中的每个命令都在不同的进程中运行。

处理将命令输出检索到变量的任务的常用方法是使用for /f命令

for /f "delims=" %%a in ('
    %systemroot%\System32\WindowsPowerShell\v1.0\powershell.exe .\Code.ps1
    ^| find "::/kl"
') do set "code=%%a"

答案 1 :(得分:1)

cmd.exe的每个实例都从启动进程继承环境,该启动进程从主环境继承 因此,您可以使用setx持久存储在主环境中。

或者您尝试在文件中存储单个变量并使用

进行检索
(Echo:%Example_var%)>text.txt
Set /p "Example_var="<text.txt

这将仅存储变量的内容,或

(Set Example_var)>text.txt
For /f "delims=" %%A in (text.txt) Do Set %%A

哪些存储/恢复variablename=variablecontent

作为未指定变量名称的变体,后者可以store/restore the whole environment