Board logo

标题: [求助]如何一次性获得所有命令的"/?"帮助? [打印本页]

作者: wydos     时间: 2006-6-16 17:43    标题: [求助]如何一次性获得所有命令的"/?"帮助?

如何一次性获得在命令行中所有的"命令/?"帮助,并且把它保存在相应的"命令".txt中.
例如,cmd/? >>cmd.txt

[ Last edited by willsort on 2006-7-29 at 16:30 ]
作者: electronixtar     时间: 2006-6-16 18:08
http://www.cn-dos.net/forum/view ... ge=1&highlight=
作者: namejm     时间: 2006-6-16 18:42
  发一段自己最近写的代码上来,有点粗糙,其中部分参照了willsort的代码,希望对你有用。

  
@echo off
::   Code by JM 2006-6-11
:in
mode con lines=25
cls
color 1f
chcp 936>nul
title 请输入命令名称
echo.
echo                               ╭────────╮   
echo           ╭─────────┤   请输入命令   ├──────────╮
echo           │                  ╰────────╯                    │
echo           │         操作说明:                                       │
echo           │                                                          │
echo           │             请输入一个DOS命令名称,然后回车。            │
echo           │                                                          │
echo           │         本操作将把该DOS命令的帮助信息输出到当            │
echo           │                                                          │
echo           │         前目录下以该命令为文件名的文本文件中             │
echo           │                                                          │
echo           │         (例如:copy.txt)。完成一个操作之后,           │
echo           │                                                          │
echo           │         将返回本界面继续下一个操作。生成所有             │
echo           │                                                          │
echo           │         的DOS帮助信息请输入all。                         │  
echo           │                                                          │
echo           │╭──────────────╮          ╭──────╮│
echo           ╰┤  察看DOS命令列表请输入help ├─────┤退出请按 0  ├╯
echo             ╰──────────────╯          ╰──────╯  
echo.
echo.
set input=
set /p input=           请输入一个DOS命令名称并回车确认:
if '%input%'=='0' exit
if '%input%'=='' goto in
if '%input%'=='help' goto help
if '%input%'=='all' goto cmdinfo
%input% >nul 2>nul || (
    cls
    color 0c
    title 命令输入错误
    echo.
    echo.
    echo.
    echo.
    echo.
    echo.
    echo.
    echo.
    echo                ──────────────────────────
    echo.
    echo                         "%input%" 不是DOS命令,请重新输入
    echo.
    echo                ──────────────────────────
    pause>nul && goto in
)
%input% /? >%input%.txt
goto info

:help
mode con lines=84
cls
title DOS命令列表
echo.
help
echo       ╭────────────────────────────╮            
echo ───┤ 上一步请按1,生成DOS命令列表help.txt请回车,退出请按 0 ├────
echo       ╰────────────────────────────╯  
echo.
echo.
set /p input=                  请选择(0/1/回车)
if not '%input%'=='' set input=%input%
if '%input%'=='0' exit
if '%input%'=='1' goto in
if '%input%'=='help' goto made
goto help

:cmdinfo
mode con lines=25
cls
title 生成帮助信息
(echo.
echo.
echo                                DOS命令帮助信息
echo.
echo                                    由 %username% 创建于 %date:~0,10%
echo.)>DOS命令帮助信息.txt
for /f  %%i in ('help^|findstr "^[A-Z]"') do (
    cls
    echo.
    echo.
    echo.
    echo.
    echo.
    echo.
    echo.
    echo.
    echo.
    echo              ──────────────────────────
    echo.
    echo                      正在生成  %%i  的帮助信息,请稍候...
    echo.
    echo              ──────────────────────────   
    help %%i>>DOS命令帮助信息.txt
    if errorlevel 1 echo.>>DOS命令帮助信息.txt
    (if errorlevel 0 echo ————————————————————————
         echo.)>>DOS命令帮助信息.txt)
cls
title 操作成功
echo.
echo.
echo.
echo.
echo.
echo                   ──────────────────────────
echo.
echo                           操作已完成,已经在当前目录下生成
echo.
echo                              "DOS命令帮助信息.txt" 文件
echo.
echo                   ──────────────────────────
ping 127.0.0.1 -n 3 >nul
start DOS命令帮助信息.txt
goto in

:made
mode con lines=25
(echo.
    echo.
    echo                                DOS命令列表
    echo.
    echo.)>help.txt
help>>help.txt

:info
cls
chcp 936>nul
title 操作成功
echo.
echo.
echo.
echo.
echo.
echo                   ──────────────────────────
echo.
echo                           操作已完成,已经在当前目录下生成
echo.
echo                                   %input%.txt文件
echo.
echo                   ──────────────────────────
start %input%.txt
goto in

作者: 不得不爱     时间: 2006-6-16 21:08
楼上的把问题搞复杂了把?就两句命令就可以了!
help>a.txt
for /f %i in (a.txt) do @%i /?>>1.txt
作者: namejm     时间: 2006-6-16 21:19
  呵呵,我那个脚本除了能一次性输出所有的CMD帮助信息之外,还能把每个命令的帮助内容保存在单独的文件里,能给用户一定的选择自由。
作者: 不得不爱     时间: 2006-6-16 21:53


  Quote:
Originally posted by namejm at 2006-6-16 21:19:
  呵呵,我那个脚本除了能一次性输出所有的CMD帮助信息之外,还能把每个命令的帮助内容保存在单独的文件里,能给用户一定的选择自由。

即使把每个命令的帮助内容保存在单独的文件里也没有不要搞得那么复杂吧,可以用2个命令何必用那么多的命令!
作者: namejm     时间: 2006-6-16 22:32
  简洁与方便,各取所需吧。
作者: willsort     时间: 2006-6-17 01:40
Re Ups:

      其实 namejm 兄代码的核心也不过是一句:

      for /f  %%i in ('help^|findstr "^[A-Z]"') do help %%i >>DOS命令帮助信息.txt

      但是,这样单纯的代码产生的文本内容未加修饰,存在较多的排版问题,因而可读性比较低。另外,此类文档一般用于临时备查,所以索引和定位功能的实现比较重要,但用批处理实现起来较为复杂,有很多细节可能无法考虑周全[1]。

      所以,楼主需要的是可能并非纯文本的cmd /?信息,而是2楼所提到的ntcmds.chm(Windows帮助文档的一部分)以及微软MSDN网站的知识和文档库。

[1][转贴][讨论]生成《CMD命令速查手册》的批处理
http://www.cn-dos.net/forum/viewthread.php?tid=18321
作者: wydos     时间: 2006-6-17 09:39
我把我所有的dos命令先保存在1.txt中(每个命令占一行),然后做个bat:
for /f %%i in (1.txt) do %%i/?>>%%i.txt
但有些成功了,有些就不行,比如: 生成的for.txt,其内容为空,也就是说for/?的内容没有进for.txt中.
这时为什么?
作者: 220110     时间: 2006-6-17 20:55
为什么不直接查看现成又详细的C:\WINDOWS\Help\ntcmds.chm??---见3742668版主签名.
作者: poyexinghun     时间: 2006-7-19 01:28


  Quote:
Originally posted by qwe1234567 at 2006-6-16 21:08:
楼上的把问题搞复杂了把?就两句命令就可以了!
help>a.txt
for /f %i in (a.txt) do @%i /?>>1.txt

呵呵,改下兄的代码,生成命令名帮助的文件,
for /f %i in (a.txt) do @%i /? > %i.txt
大多数可以生成,少数的不可以,请各位修改!

例如:
'FOR' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'中某个带标签的行。' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'IF' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

(使用2003系统)
作者: diyuxuehu     时间: 2006-7-28 12:28
我XP系统
help>a.txt
for /f %i in (a.txt) do @%i /?>>%i.txt
结果只生成A.TXT,别的没有拉,为什么啊????
作者: namejm     时间: 2006-7-28 13:19
Re diyuxuehu:

  那是因为a.txt同一行的内容中,不仅有命令,还有命令用途的简单说明,所以在for语句中,%i的内容是"命令+说明",所以呢,for语句执行错误,只留下了help>a.txt生成的a.txt。
作者: kclmx     时间: 2006-7-28 13:48
赫赫,俺別的沒看懂,到是学会一个保存文件名的方法:
dir *.exe /w/n o >c:\1.txt

请问,如果我想查*.exe和*.dll文件名并保存在一个文件里,應該怎麽写?


哦,会了,直接dir *.exe *.dll /w/n o >1.txt
哎,要学的東西還很多呀

仔細看看,这样的话 /n o的排序失效了,晕,如果不想分幵写
dir *.exe /w/n o >1.txt
dir *.dll /w/n o >>1.txt
如何用一句代碼實現?

[ Last edited by kclmx on 2006-7-28 at 14:32 ]
作者: willsort     时间: 2006-7-29 16:50
Re poyexinghun:

      关于for/if命令的问题,可以将%i /?改为以下三句中任何一句:

            help %i
            call %i /?
            cmd/c%i/?。

      但同时考虑非命令串的剔除,则使用cmd/c%i/?最好的选择。如下:

for /f %c in ('help') do @cmd/c%c/? 2>nul
作者: vane914     时间: 2006-7-29 18:00    标题: 大家心平气和

这里学得东西好多