"findstr"不被识别为内部或外部命令

45

今天我在命令行提示符下启动JBoss时遇到了以下错误:

'findstr' is not recognized as an internal or external command
10个回答

90

请在谷歌上搜索,您会找到许多答案。但是按照以下步骤进行修复。将以下值添加到“我的电脑”右键->高级->环境变量->系统变量->选择路径变量->追加以下值。

C:\WINDOWS\system32

这样更改后应该可以解决问题。


56
很有趣,你说“请谷歌一下”,现在这篇文章成为“findstr未被识别”的搜索结果排名第一了。:-P - Stephen Wylie
2
在添加了PATH变量之后,您可能需要重新启动应用程序才能使设置生效。 - javaauthority
2
更简洁的指定路径的方法是使用 %systemroot%\system32。 - autonomy
1
我检查了我的PATH变量,它已经存在了,但是我仍然看到这个错误。 - Michael Miner
@javaauthority 你说得对。重新启动应用程序后,设置生效了。 - undefined
显示剩余5条评论

4
正如其他人指出的那样,问题在于Windows中PATH变量的错误设置。根据文章,这很可能是因为某些愚蠢的安装程序错误地修改了Windows注册表中的PATH变量。注册表有两种不同的字符串值类型 - REG_SZREG_EXPAND_SZ。只有第二种类型允许扩展%SystemRoot%

因此,请通过在命令提示符中键入set path来检查您的路径。如果您看到未扩展的%SystemRoot%和其他变量在Path中,则受影响(PATH应仅显示纯目录名称,而不是变量)。

您需要编辑注册表中的Path变量:HKEY_CURRENT_USER\EnvironmentHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment。由于无法更改密钥的类型,请将路径值保存在某个地方,删除该密钥,然后使用类型REG_EXPAND_SZ重新创建它。您需要注销以使更改生效。


3

对我来说,当我把findstr(从windows/system32)复制到wildfly/bin时,它可以正常工作。


2
请按照以下简单步骤进行操作:
  1. 前往 C:\Windows\system32\ 并复制 findstr.exe 文件。
  2. 将该文件粘贴到位置 C:\Program Files\Java\jdk1.6.0_24\bin 中。
  3. 重新运行 jboss,您将摆脱这个问题.....

8
仅仅因为某种方法有效,并不意味着这就是正确的做事方式。这正是我们最终导致庞大/失效软件的原因。@AshuPhaugat - autonomy

1
检查一下你的 %SystemRoot% 是否被计算(在命令提示符中键入 set path,不应该看到 %SystemRoot%,而是实际路径)。如果你的路径变量(用户或系统)的第一个条目以 %(环境变量) 开头,这可能会导致问题。
为了解决这个问题,只需将第一个条目与路径中任何不以环境变量开头的其他内容交换即可。

1

您也可以通过将“findstr”替换为“C:\Windows\system32\findstr”来硬编码目录。这在使用受限用户权限的系统时非常有用。


1

针对IBM ACE解决方案

'findstr'不被识别为内部或外部命令,

  1. 前往路径C:\Windows\System32

  2. 找到findstr.exe,复制它,然后找到您的应用程序bin文件所在的路径。例如:C:\Program Files\IBM\ACE\11.0.0.12\server\bin,然后将其粘贴到bin文件夹中

  3. 取消ACE控制台并重新打开它。

  4. 然后在ACE控制台上运行ACE工具包命令。

  5. 然后按回车键,现在它可以打开了。


0
请注意,当前的Windows系统在System目录中使用大写字母"S",因此: C:\WINDOWS\System32 %SystemRoot%\System32
省略大写字母"S"将导致%PATH%中该行被忽略。

哪个Windows版本默认使用区分大小写的NTFS文件系统作为系统驱动器? - Marki555

0

我尝试使用Play框架进行编程,但卡在了运行activator.bat文件的步骤上。解决方法是将文件从windows/system32/findsr复制到卡住的文件夹下,然后再次运行相应的文件。 感谢andrewsi和Suryaprakash。


0
在我的情况下(与 JBoss 无关),以下方法有助于解决此错误。
而不是:
SET path="%path%;C:\some\additional\path"

我使用了:

SET "path=%path%;C:\some\additional\path"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接