我设置了一个名为 find 的系统环境变量,它指向一个批处理脚本。我这样做是为了在 Win 命令提示符中输入 %find% 并执行我的脚本。它工作的唯一问题是它只工作一次,我的脚本需要一个参数或需要用户输入(都尝试过),然后就好像 %find% 被临时覆盖了,%find% 当然不再工作,直到我重新打开命令窗口。基本上它工作一次,就是这样!
我怎样才能让它每次都工作?我想一遍又一遍地使用环境变量执行我的脚本,而无需重新加载命令窗口。
谢谢。
我设置了一个名为 find 的系统环境变量,它指向一个批处理脚本。我这样做是为了在 Win 命令提示符中输入 %find% 并执行我的脚本。它工作的唯一问题是它只工作一次,我的脚本需要一个参数或需要用户输入(都尝试过),然后就好像 %find% 被临时覆盖了,%find% 当然不再工作,直到我重新打开命令窗口。基本上它工作一次,就是这样!
我怎样才能让它每次都工作?我想一遍又一遍地使用环境变量执行我的脚本,而无需重新加载命令窗口。
谢谢。
请记住,这find
是 MS 提供的实用程序。
尝试使用不同的名称。并向我们展示您的批次——甚至可以描述当它“不再有效”时会发生什么。20 个问题的游戏很乏味。
如果您打算覆盖现有 find.exe 实用程序的行为,则可以将脚本的位置添加到 System32 文件夹(find.exe 所在的位置)之前的全局路径变量中。例如,假设您的脚本是C:\Scripts\find.bat
. 如果您的路径变量当前设置为此:
%SystemRoot%\system32;%SystemRoot%
...然后您将其更改为:
C:\Scripts;%SystemRoot%\system32;%SystemRoot%
不过要当心……这样做可能会破坏其他使用 find 命令的脚本(如果它们不使用 find.exe 的绝对路径)。
如果您只是想要一种简单的方法来运行您的备用查找命令,您可以按照其他人的建议给它一个不同的名称,然后将其添加到路径的末尾或将其放在 System32 文件夹中。这将使您不必至少键入百分号。
我使用以下代码创建了一个批处理脚本:
@ECHO off
echo hello
并添加了一个指向脚本的名为 TEST 的环境变量。我多次使用环境变量执行脚本没有问题。
您能否提供一些有关您的脚本功能的信息或代码?
问题是批处理脚本使用了一个同名的变量,所以在它第一次运行之后,变量值被覆盖并且不再起作用。为防止这种情况发生,setlocal
请在批处理文件的开头插入一条命令;这样,当脚本结束时,所有变量都会重置为脚本运行之前的值。此方法还会删除批处理脚本中定义的所有新变量,从而保持环境清洁。