中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-22 10:18
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何一次性获得所有命令的"/?"帮助? 查看 2,382 回复 15
楼 主 [求助]如何一次性获得所有命令的"/?"帮助? 发表于 2006-06-16 17:43 ·  中国 贵州 贵阳 电信
中级用户
★★
积分 304
发帖 117
注册 2006-04-04 18:43
20年会员
UID 53325
性别 男
状态 离线
如何一次性获得在命令行中所有的"命令/?"帮助,并且把它保存在相应的"命令".txt中.
例如,cmd/? >>cmd.txt

[ Last edited by willsort on 2006-7-29 at 16:30 ]
2 发表于 2006-06-16 18:08 ·  IANA 局域网IP(Private-Use)
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
3 发表于 2006-06-16 18:42 ·  中国 四川 雅安 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  发一段自己最近写的代码上来,有点粗糙,其中部分参照了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 "^"') 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
4 发表于 2006-06-16 21:08 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
楼上的把问题搞复杂了把?就两句命令就可以了!
help>a.txt
for /f %i in (a.txt) do @%i /?>>1.txt
5 发表于 2006-06-16 21:19 ·  中国 四川 成都 鹏博士宽带
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  呵呵,我那个脚本除了能一次性输出所有的CMD帮助信息之外,还能把每个命令的帮助内容保存在单独的文件里,能给用户一定的选择自由。
6 发表于 2006-06-16 21:53 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
Originally posted by namejm at 2006-6-16 21:19:
  呵呵,我那个脚本除了能一次性输出所有的CMD帮助信息之外,还能把每个命令的帮助内容保存在单独的文件里,能给用户一定的选择自由。

即使把每个命令的帮助内容保存在单独的文件里也没有不要搞得那么复杂吧,可以用2个命令何必用那么多的命令!
7 发表于 2006-06-16 22:32 ·  中国 四川 成都 鹏博士宽带
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
  简洁与方便,各取所需吧。
8 发表于 2006-06-17 01:40 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
Re Ups:

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

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

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

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

生成《CMD命令速查手册》的批处理
http://www.cn-dos.net/forum/viewthread.php?tid=18321
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
9 发表于 2006-06-17 09:39 ·  中国 贵州 贵阳 电信
中级用户
★★
积分 304
发帖 117
注册 2006-04-04 18:43
20年会员
UID 53325
性别 男
状态 离线
我把我所有的dos命令先保存在1.txt中(每个命令占一行),然后做个bat:
for /f %%i in (1.txt) do %%i/?>>%%i.txt
但有些成功了,有些就不行,比如: 生成的for.txt,其内容为空,也就是说for/?的内容没有进for.txt中.
这时为什么?
10 发表于 2006-06-17 20:55 ·  中国 广东 广州 电信
荣誉版主
★★★
积分 718
发帖 313
注册 2005-09-26 00:00
20年会员
UID 42844
性别 男
状态 离线
为什么不直接查看现成又详细的C:\WINDOWS\Help\ntcmds.chm??---见3742668版主签名.
11 发表于 2006-07-19 01:28 ·  中国 湖北 襄阳 电信
新手上路
吃-&gt;学-&gt;睡
积分 12
发帖 4
注册 2006-07-16 19:28
19年会员
UID 58679
性别 男
来自 襄阳城边看风景!
状态 离线
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系统)
12 发表于 2006-07-28 12:28 ·  中国 广西 南宁 电信
初级用户
积分 26
发帖 11
注册 2006-07-21 16:44
19年会员
UID 58977
性别 男
状态 离线
我XP系统
help>a.txt
for /f %i in (a.txt) do @%i /?>>%i.txt
结果只生成A.TXT,别的没有拉,为什么啊????
13 发表于 2006-07-28 13:19 ·  中国 四川 成都 鹏博士宽带
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
Re diyuxuehu:

  那是因为a.txt同一行的内容中,不仅有命令,还有命令用途的简单说明,所以在for语句中,%i的内容是"命令+说明",所以呢,for语句执行错误,只留下了help>a.txt生成的a.txt。
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
14 发表于 2006-07-28 13:48 ·  中国 上海 普陀区 电信
初级用户
积分 38
发帖 15
注册 2006-07-04 11:53
19年会员
UID 57983
状态 离线
赫赫,俺別的沒看懂,到是学会一个保存文件名的方法:
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 ]
15 发表于 2006-07-29 16:50 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
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
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
论坛跳转: