从环境变量执行批处理脚本

时间:2013-05-03 08:44:32

标签: windows batch-file environment-variables command-prompt

我已经设置了一个名为find的系统环境变量,该变量指向批处理脚本。我这样做,以便在Win命令提示符下我可以键入%find%,它将执行我的脚本。它工作唯一的问题是它只工作一次,我的脚本需要一个参数或需要用户输入(已尝试过两者),然后就好像%find%被临时覆盖,%find%当然不再有效,直到我重新打开命令窗口。基本上它只运行一次就可以了!

我怎样才能让它每次都有效?我想在不重新加载命令窗口的情况下,一遍又一遍地使用环境变量执行我的脚本。

感谢。

4 个答案:

答案 0 :(得分:0)

我使用以下代码创建了一个批处理脚本:

@ECHO off
echo hello

并添加了一个名为TEST的环境变量,指向该脚本。我多次使用环境变量执行脚本没有问题。

您能否提供一些有关您的脚本的信息或代码?

答案 1 :(得分:0)

请记住,find是MS提供的实用程序。

尝试使用其他名称。并向我们​​展示您的批次 - 甚至可能描述当它“不再有效”时会发生什么。 20个问题的游戏很乏味。

答案 2 :(得分:0)

问题是Batch脚本使用了一个具有相同名称的变量,因此在第一次运行之后,变量值将被覆盖并且不再起作用。要防止这种情况发生,请在批处理文件的开头插入setlocal命令;这样,当脚本结束时,所有变量都会重置为脚本运行前的值。此方法还会删除Batch脚本中定义的所有新变量,因此可以保持环境清洁。

答案 3 :(得分:0)

如果您的目的是覆盖现有find.exe实用程序的行为,则可以在System32文件夹(find.exe所在的位置)之前将脚本的位置添加到全局路径变量中。例如,假设您的脚本为C:\Scripts\find.bat。如果您的路径变量当前设置为:

%SystemRoot%\system32;%SystemRoot%

...然后你会改成它:

C:\Scripts;%SystemRoot%\system32;%SystemRoot%

请注意......执行此操作可能会破坏使用find命令的其他脚本(如果他们不使用find.exe的绝对路径)。

如果您只是想要一种简单的方法来运行备用查找命令,您可以像其他人建议的那样给它一个不同的名称,然后将其添加到路径的末尾或将其放在System32文件夹中。这样可以避免至少输入百分号。