Batch file 让批处理文件记住一些东西

Batch file 让批处理文件记住一些东西,batch-file,Batch File,我的批处理文件有问题。我需要它来长久地记住某件事 一段时间。假设我有一个名为%Rememberme%的变量:出于某种原因,我需要记住这个变量,比如说一年。如何使批处理文件记住该变量 嗯。。。我可以使用命令将变量回送到文件中 echo >>%Rememberme% C:\File.txt 问题是我不能那样。我需要以其他方式记住它。 或者我需要授予批处理文件管理员权限,以便它可以读取或写入文件。有办法做到这一点吗?您可以使用环境变量来做到这一点,但请注意不要覆盖现有变量 例:

我的批处理文件有问题。我需要它来长久地记住某件事 一段时间。假设我有一个名为
%Rememberme%
的变量:出于某种原因,我需要记住这个变量,比如说一年。如何使批处理文件记住该变量

嗯。。。我可以使用命令
将变量回送到文件中

    echo >>%Rememberme% C:\File.txt
问题是我不能那样。我需要以其他方式记住它。
或者我需要授予批处理文件管理员权限,以便它可以读取或写入文件。有办法做到这一点吗?

您可以使用环境变量来做到这一点,但请注意不要覆盖现有变量

例:

然后在另一个文件中

>echo %REMEMBERME%
>C:\windows\system32
SETX的文档如下所示:

来自链接的重要评论:

Setx提供了唯一直接和永久设置系统环境值的命令行或编程方式。系统环境变量可通过控制面板或注册表编辑器手动配置。set命令是命令解释器(Cmd.exe)的内部命令,它仅为当前控制台窗口设置用户环境变量


下面是一个以文件名保存变量的示例。这显然是假设变量仅限于文件名友好字符(如数字)

也可以将变量存储在文本文件中,但这需要打开文件才能读取变量

:: Reading variable
for /F "tokens=*" %%A in (myvariable.txt) do (
    set "myvariable=%%A"
)

:: Setting variable
echo %myvariable%> myvariable.txt

echo %myvariable%

你的问题不清楚。它没有任何例子,也没有对请求的明确描述,所以我只能猜测

首先,最明显的一点是:如何让批处理文件中的变量能够长时间记住其值?(即:始终)简单:只需在批处理文件中定义变量:

set Rememberme=The value to remember
当然,前面的方法不允许更改变量的值,但是您在请求中没有提到这一点:“变量的值可能会更改”

虽然SETX命令应该可以工作,但它需要管理员权限,而且SETX不是为这种情况设计的。例如,如果批处理文件被更改或不再在给定计算机中使用,会发生什么情况?那么,变量的最后一个值将永远留在这样的计算机中

第二个显而易见的解决方案是将变量写入一个单独的文件,并在批处理文件启动时从该文件中读取。如果单独的文件是数据文件,Matt Johnson描述的方法应该可以工作,并且不需要管理员权限。您必须注意,单独的文件也可能是批处理文件,因此可以通过简单的
call
语句读取变量的值:

rem Save the value
echo set Rememberme=%Rememberme%> setTheValue.bat

rem Read the value
call setTheValue.bat
然而“问题是你不能拥有它,所以你需要以其他方式被记住”,尽管你没有解释这种限制的原因

另一个解决方案(我想这就是您正在寻找的)是在同一批处理文件中设置变量的定义:

set Rememberme=The value to remember
在前面的代码中,“%~F0”
表示正在运行的批处理文件本身的名称。这样,变量值的每次更改都会在批处理文件的底部追加一个新行。

首先:

echo >>%Rememberme% C:\File.txt
这是错误的。它试图将字符串“C:\File.txt”写入变量
%rememberme%
引用的文件名中。你想要的是:

echo %Rememberme%>>c:\File.txt
(或只有一个
来覆盖文件)

第二:如果您没有写入根目录的权限,请使用其他目录,例如:

echo %Rememberme%>%userprofile%\file.txt

注意:请确保
%Rememberme%
之间没有空格;如果你试着读回它,它将成为字符串的一部分

要将其读回,请使用:

set /p "remembered=" <%public%\file.txt

set/p“membered=”但是。。。为什么你不能把它写进一个文件?批处理文件什么都记不住;它们只是脚本。如果您需要存储一个值,这就是持久性存储(文件、数据库)的用途。我正在制作一个测试程序。我正在学习这门语言,所以。。。是的\叉子网状花键怎么样?嗯。。。给它管理员权限或者让那个小小的“给管理员权限”框出现怎么样。。。那又叫什么?@Rickygones它不需要提升权限,不。@Rickygones没问题。如果有帮助,请记住接受/投票。祝你好运如果您想更改此选项,会发生什么情况variable@RickyGonce您可以简单地覆盖它。
echo %Rememberme%>%userprofile%\file.txt
echo %Rememberme%>%public%\file.txt
set /p "remembered=" <%public%\file.txt