cmd,生成帮助文件的程序

cmd,生成帮助文件的程序,cmd,Cmd,该程序应该通过help命令为每个文件生成帮助文件。 但是它不能正常工作,我不知道为什么。请帮帮我)要从help的输出中仅提取命令,您需要以下内容: @echo off md helpgen 2>nul cd helpgen for /F %%i in ('help') do ( echo %%i|findstr /R "^[A-Z]*$" >nul if "%ERRORLEVEL%"=="0" ( help %%i>%%i.txt ) ) cd .. 模

该程序应该通过
help
命令为每个文件生成帮助文件。
但是它不能正常工作,我不知道为什么。请帮帮我)

要从
help
的输出中仅提取命令,您需要以下内容:

@echo off
md helpgen 2>nul
cd helpgen
for /F %%i in ('help') do (
  echo %%i|findstr /R "^[A-Z]*$" >nul
  if "%ERRORLEVEL%"=="0" (
    help %%i>%%i.txt
  ) 
)
cd ..

模式
“^[A-Z][A-Z]*”
确保您只处理以字符开头且在第一个单词后至少有两个空格的行。

您的代码不起作用,因为%ERRORLEVEL%在解析时展开,而整个括号中的代码块在一次传递中解析。每次迭代都需要ERRORLEVEL的值,但代码得到的是执行循环之前存在的ERRORLEVEL的值

一种解决方案是使用
setlocal enableDelayedExpansion
在顶部启用延迟扩展。然后在循环中使用
!错误等级而不是
%ERRORLEVEL%
。延迟扩展将在每次迭代执行时给出所需的ERRORLEVEL值

在命令行中键入
help set
set/?
,以获取有关延迟扩展的详细信息

但是有一个更简单的解决方案,可以避免变量的扩展<仅当command1成功时,code>command1&&command2
才会执行command2。如果先前的命令不成功,还可以使用
|
操作符执行命令

但是整个练习是毫无意义的,因为FINDSTR表达式不会给出正确的结果,所以最终输出仍然是错误的

Ansgar Wiechers确定了一种在中工作的搜索模式。不需要“tokens=1”,因为这是默认设置

最终脚本可以简单到:

for /f "tokens=1" %%i in ('help ^| findstr /rc:"^[A-Z][A-Z]*  "') do (
  echo %%i
)

一般来说,“不起作用”是毫无意义的。如果它真的起作用,你就不会在这里了。我们需要知道它怎么不起作用。你创建了坏文件吗?根本没有文件?语法错误?这会占用你的计算机?有不需要的文件。但是,如果我在没有“>nul”的情况下键入“echo%%i | findstr/R”^[A-Z]*$“>nul”,程序将在屏幕上输出正确的命令。
@echo off
md helpgen 2>nul
cd helpgen
for /f %%i in ('help ^| findstr /rc:"^[A-Z][A-Z]*  "') do help %%i>%%i.txt