Có một lệnh để có được một danh sách các lệnh cmd trong Windows không?


Câu trả lời:


20

Đối với một danh sách các lệnh:

help

Và để biết chi tiết về một lệnh cụ thể:

help <command>

hoặc là

<command> /?

Ví dụ:

help xcopy
xcopy /?

Bạn có thể sử dụng xcopy /?để có được thông tin về lệnh. :)
avirk 21/11 '

Là nó có thể cũng để có được một danh sách các lệnh mạng như ping, arp, nslookup? Dường như helpchỉ tạo ra một danh sách các lệnh Windows cơ bản chứ không phải các lệnh mạng.
amiregelz

2
@amiregelz: Đó là những chương trình trong windows\system32thư mục mà tôi tin rằng nó trông giống như khi giải quyết các chương trình / lệnh. Đối với danh sách của bạn, bạn có thể tìm exes ở đó. Xem câu trả lời của Oliver.
George Duckett

14

Bạn có thể tìm thấy một danh sách chính thức tại Microsoft Tham khảo dòng lệnh AZ . Bên cạnh đó...

Để trả lời trực tiếp câu hỏi của bạn, tôi đã nghĩ ra một tập lệnh chỉ liệt kê tất cả .execác tệp mà bạn có thể thực thi (vì chúng nằm trên của bạn PATH). Theo mặc định, nó chỉ liệt kê những cái cũng nằm trong %WINDIR%(trừ khi bạn chạy nó với --all).

Trong một lần lặp trước của kịch bản, tôi đã bắt đầu mọi lệnh với /?, đó là một ý tưởng rất tồi. Không phải mọi ứng dụng trên đều PATHhiểu tham số đó. Một số sẽ chỉ bắt đầu và duy trì hoạt động, thay vì in bất kỳ trợ giúp. Vì vậy, nó ăn rất nhiều tài nguyên khá nhanh chóng.

@SETLOCAL ENABLEEXTENSIONS 
@ECHO OFF

IF "%1"=="--all" (
    SET LIST_ALL=TRUE
)
CALL :printPath "%PATH%"
:printPath
FOR /F "tokens=1,* delims=;" %%A IN ("%~1") DO (
    IF EXIST "%%A" (
        PUSHD "%%A"
        FOR %%F IN (*.exe) DO (
            ECHO.%%~dnpfF | FINDSTR /C:"%WINDIR%" 1> NUL
            IF ERRORLEVEL 1 (
                IF "%LIST_ALL%"=="TRUE" ECHO.%%~dnpfF
            ) ELSE (
                ECHO.%%~dnpfF
            )
        )
        POPD
    ) ELSE (
        REM ECHO Skipping non-existent folder '%%A'
    )
    CALL :printPath "%%~B"
)
ENDLOCAL

Vì vậy, có. Điều này cung cấp cho bạn một danh sách tất cả các lệnh có sẵn và các tham số của chúng. Như bạn có thể mong đợi, nó không hữu ích như người ta có thể tưởng tượng.

Đây là những gì thực sự quan trọng!

Thú vị hơn các .exetệp trên của bạn PATHlà các tệp cmd.exedựng sẵn. Thích IF, FORSET. Tôi không có một danh sách đầy đủ các phần dựng sẵn, nhưng bạn có thể thấy hầu hết chúng bằng cách chạy cmd.exe /?:

DEL or ERASE
COLOR
CD or CHDIR
MD or MKDIR
PROMPT
PUSHD
POPD
SET
SETLOCAL
ENDLOCAL
IF
FOR
CALL
SHIFT
GOTO
START (also includes changes to external command invocation)
ASSOC
FTYPE

Mặc dù, tại thời điểm đó, trợ giúp đang tham chiếu các phần mở rộng lệnh , vì vậy danh sách có thể không đầy đủ. Chúng ta hãy xem xét kỹ hơn về một số tích hợp:

CHO /?

Tài liệu cho FORlệnh liệt kê tất cả các tham số điên bạn có thể chuyển đến FOR. Đây là tiện ích đi tới nếu bạn muốn viết bất cứ điều gì liên quan đến các vòng lặp .

Tài liệu này cũng chứa lời giải thích cho "ký hiệu dấu ngã" điên rồ:

In addition, substitution of FOR variable references has been enhanced
You can now use the following optional syntax:

    %~I         - expands %I removing any surrounding quotes (")
    %~fI        - expands %I to a fully qualified path name
    %~dI        - expands %I to a drive letter only
    %~pI        - expands %I to a path only
    %~nI        - expands %I to a file name only
    %~xI        - expands %I to a file extension only
    %~sI        - expanded path contains short names only
    %~aI        - expands %I to file attributes of file
    %~tI        - expands %I to date/time of file
    %~zI        - expands %I to size of file
    %~$PATH:I   - searches the directories listed in the PATH
                   environment variable and expands %I to the
                   fully qualified name of the first one found.
                   If the environment variable name is not
                   defined or the file is not found by the
                   search, then this modifier expands to the
                   empty string

The modifiers can be combined to get compound results:

    %~dpI       - expands %I to a drive letter and path only
    %~nxI       - expands %I to a file name and extension only
    %~fsI       - expands %I to a full path name with short names only
    %~dp$PATH:I - searches the directories listed in the PATH
                   environment variable for %I and expands to the
                   drive letter and path of the first one found.
    %~ftzaI     - expands %I to a DIR like output line

NẾU /?

IFlà lệnh để phân nhánh . Bạn sẽ cần trang này vì nó liệt kê các toán tử so sánh:

If Command Extensions are enabled IF changes as follows:

    IF [/I] string1 compare-op string2 command
    IF CMDEXTVERSION number command
    IF DEFINED variable command

where compare-op may be one of:

    EQU - equal
    NEQ - not equal
    LSS - less than
    LEQ - less than or equal
    GTR - greater than
    GEQ - greater than or equal

BỘ /?

SET cho phép bạn thực hiện một loạt các hoạt động trên các biến.

The /A switch specifies that the string to the right of the equal sign
is a numerical expression that is evaluated.  The expression evaluator
is pretty simple and supports the following operations, in decreasing
order of precedence:

    ()                  - grouping
    ! ~ -               - unary operators
    * / %               - arithmetic operators
    + -                 - arithmetic operators
    << >>               - logical shift
    &                   - bitwise and
    ^                   - bitwise exclusive or
    |                   - bitwise or
    = *= /= %= += -=    - assignment
      &= ^= |= <<= >>=
    ,                   - expression separator

Nó cũng cho phép thao tác chuỗi thông qua "ký hiệu dấu ngã" đã đề cập ở trên


Bạn có nghĩ rằng có một cách để có được các lệnh được liệt kê ở đây nhưng không phải khi gõ help? Lệnh mạng ví dụ như ipconfig, nslookup, arp, telnetping?
amiregelz

@amiregelz: Nên hoạt động tốt vì chúng nằm ở C:\Windows\System32. Tôi cho rằng đó là trênPATH
Der Hochstapler

Nó không liệt kê chúng mặc dù chúng nằm ở đó. Nó liệt kê ARP.EXEmặc dù. Bạn có thấy các lệnh tôi đã đề cập khi bạn thực thi tập lệnh của mình không?
amiregelz

@amiregelz: Vâng, nhưng tôi nghĩ có vấn đề nếu bạn PATHchứa một thư mục không còn tồn tại. Điều đó khiến kịch bản bị phá vỡ. Có lẽ đó là vấn đề? Tôi đang sửa chữa.
Der Hochstapler

2
@amiregelz: Ngoài ra, có vẻ như không khôn ngoan khi bắt đầu mọi ứng dụng trên của bạn PATH: D
Der Hochstapler

6

Có tập lệnh bó có sẵn tại dostips.com ( CreateDosCommandIndex.bat ) tạo tệp html chứa danh sách đầy đủ các lệnh dos có sẵn trên hệ thống, cùng với đầu ra tương ứng của chúng được tạo thông qua "Commandname /?"

Tôi đang báo cáo bên dưới vì dostips.com dường như có các vấn đề liên quan đến tải db vào thời điểm này và trang web của họ hoạt động không liên tục.

@ECHO OFF
REM.-- Prepare the Command Processor
SETLOCAL ENABLEEXTENSIONS

REM --
REM -- Copyright note
REM -- This script is provided as is.  No waranty is made, whatso ever.
REM -- You may use and modify the script as you like, but keep the version history with
REM -- recognition to http://www.dostips.com in it.
REM --

REM Version History:
REM         XX.XXX      YYYYMMDD Author Description
SET "version=01.000"  &:20051201 p.h.   initial version, origin http://www.dostips.com
SET "version=01.001"  &:20060122 p.h.   Fix missing exclamation marks in documentation (http://www.dostips.com)
SET "version=01.002"  &:20060218 p.h.   replaced TEXTAREA with PRE XMP (http://www.dostips.com)
SET "version=01.003"  &:20060218 p.h.   php embedding (http://www.dostips.com)
SET "version=01.004"  &:20060723 p.h.   fix page links for FireFox (http://www.dostips.com)
SET "version=01.005"  &:20061015 p.h.   invoke HELP via '"call" help', allows overriding help command with a help.bat file (http://www.dostips.com)
SET "version=01.006"  &:20061015 p.h.   cleanup progress indicator (http://www.dostips.com)
SET "version=01.007"  &:20080316 p.h.   use codepage 1252 to support european users (http://www.dostips.com)
SET "version=02.000"  &:20080316 p.h.   use FOR command to generate HTML, avoids most escape characters (http://www.dostips.com)
SET "version=02.000"  &:20100201 p.h.   now using css and xhtml
REM !! For a new version entry, copy the last entry down and modify Date, Author and Description
SET "version=%version: =%"

for /f "delims=: tokens=2" %%a in ('chcp') do set "restore_codepage=%%a"
chcp 1252>NUL

set "z=%~dpn0.htm"

rem echo.^<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"^> >"%z%"
echo.^<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"^> >"%z%"

set "title=DOS Command Index"
for /f "tokens=*" %%a in ('ver') do set "winver=%%a"

echo.Creating the header ...
for %%A in (
            "<html lang='en-US' xml:lang='en-US' xmlns='http://www.w3.org/1999/xhtml'>"
            "<head>"
            "<style type='text/css'>"
            "  h1              {text-align:center;}"
            "  h2              {text-align:center;}"
            "  table.center    {margin-left: auto;margin-right: auto;}"
            "  td              {text-align:left;}"
            "  div.center      {text-align:center;}"
            "  div.sourcebatch {background: #DDDDDD;}"
            "  div.helptext    {background: #F8F8FF;}"
            "  div.top         {float: right;}"
            "</style>"
            "<title>%title%</title>"
            "<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1' />"
            "</head>"
            "<body bgcolor='#FFFFCC'>"
            "<font color='darkblue'>"
            "<h1>%title%</h1>"
            "<div class='center'>"
            "<table class='center' border='1' cellspacing='1' cellpadding='3'>"
            "    <tr><td>Windows Version</td><td>:</td><td>%winver%</td></tr>"
            "    <tr><td>Document Source</td><td>:</td><td>"
            "        <a href='http://www.dostips.com/'><b>http://www.dostips.com</a><br />"
            "        <a href='http://www.dostips.com/%~n0.php'><b>http://www.dostips.com/%~nx0.php</a>"
            "        </td></tr>"
            "    <tr><td>Created by</td><td>:</td><td><a href='http://www.dostips.com/%~nx0'>"
            "        <b>%~nx0</b></a><br /><a href='#%~n0'><b>Source Code below</b></a></td></tr>"
            "</table>"
            "</div>"
            "<br /><br />"
            "<table class='center'>"
            ) do echo.%%~A>>"%z%"

echo.Creating the index ...
set /a cnt=0
for /f "tokens=1,*" %%a in ('"help|findstr /v /b /c:" " /c:"For more""') do (
    for %%A in (
            "    <tr><td><a href='#%%a'>%%a</a></td><td>%%b</td></tr>"
            ) do echo.%%~A>>"%z%"
    set /a cnt+=1
)
for %%A in (
            "</table>"
            "<br /><br />"
            ) do echo.%%~A>>"%z%"

echo.Extracting HELP text ...
call:initProgress cnt
for /f %%a in ('"help|findstr /v /b /c:" " /c:"For more""') do (
    echo.Processing %%a
    for %%A in (
            "<div class='top'><a href='#'>TOP</a></div>"
            "<h2><a name='%%a'>%%a</a></h2>"
            "<div class='helptext'><pre><xmp>"
            ) do echo.%%~A>>"%z%"
    call help %%a >>"%z%" 2>&1
    echo ^</xmp^> >>"%z%"
    for %%A in (
            "</pre></div>"
            ) do echo.%%~A>>"%z%"
    call:tickProgress
)

echo.Injecting source script ...
for %%A in (
            ""
            "<br /><br />"
            "<div class='center'>"
            "<div class='top'><a href='#'>TOP</a></div>"
            "<a name='%~n0'><h2>DOS Batch Script Source that created this Document</h2></a>"
            "This %title% has been created automatically by the following DOS batch script:"
            "<br /><br />"
            "</div>"
            "<div class='sourcebatch'><pre><xmp>"
            ) do echo.%%~A>>"%z%"
type "%~f0" >>"%z%"

echo.Creating the footer ...
echo ^</xmp^> >>"%z%"
for %%A in (
            "</pre></div>"
            ""
            "</font>"
            "</body>"
            "</html>"
            ) do echo.%%~A>>"%z%"


chcp %restore_codepage%>NUL
explorer "%z%"

:SKIP
REM.-- End of application
FOR /l %%a in (5,-1,1) do (TITLE %title% -- closing in %%as&ping -n 2 -w 1 127.0.0.1>NUL)
TITLE Press any key to close the application&ECHO.&GOTO:EOF


::-----------------------------------------------------------
::helper functions follow below here
::-----------------------------------------------------------


:initProgress -- initialize an internal progress counter and display the progress in percent
::            -- %~1: in  - progress counter maximum, equal to 100 percent
::            -- %~2: in  - title string formatter, default is '[P] completed.'
set /a "ProgressCnt=-1"
set /a "ProgressMax=%~1"

set "ProgressFormat=%~2"
if "%ProgressFormat%"=="" set "ProgressFormat=[PPPP]"
set "ProgressFormat=%ProgressFormat:[PPPP]=[P] completed.%"
call :tickProgress
GOTO:EOF


:tickProgress -- display the next progress tick
set /a "ProgressCnt+=1"
SETLOCAL
set /a "per=100*ProgressCnt/ProgressMax"
set "per=%per%%%"
call title %%ProgressFormat:[P]=%per%%%
GOTO:EOF

1
Cách tiếp cận rất hay. Nó dừng lại Processing SCcho tôi mặc dù. Nhưng có vẻ như nó chỉ chờ đợi một số đầu vào. Vì vậy, nhấn Enterđể cho nó kết thúc :)
Der Hochstapler

1
Nó khá mát mẻ (xử lý & tạo ra các tập tin html), mặc dù nó không yêu cầu bạn phải có kịch bản trước, trong khi nó chỉ hiển thị các lệnh mà helpchương trình lệnh (đó là dễ dàng hơn để thực hiện). Tuy nhiên, cảm ơn cho đầu vào, nó rất hữu ích. @OliverSalzburg Nó cũng dừng ở đó đối với tôi.
amiregelz

3

Nó không chính xác là những gì bạn đang tìm kiếm một giải pháp ngoại tuyến (bạn cần bạn kết nối internet để mở trang web), nhưng là một công cụ và tài liệu tham khảo rất hữu ích cho các lệnh cmd:

Một chỉ mục AZ của dòng lệnh Windows CMD.


Nó hữu ích, nhưng nó không phải là thứ tôi đang tìm kiếm. Dẫu sao cũng xin cảm ơn.
amiregelz

@amiregelz nó là một giải pháp ngoại tuyến nếu bạn tải xuống, ví dụ như với wget.
barlop

3

Tôi biết đó không phải là chính xác những gì bạn đang yêu cầu, nhưng bạn có thể muốn bắt đầu học Powershell thay vì dấu nhắc lệnh. Microsoft đang cố gắng loại bỏ dấu nhắc lệnh cho Powershell để nó có thể là một kỹ năng tốt để học.

Nếu bạn đang ở trong Powershell, lệnh Get-Commandsẽ liệt kê tất cả các lệnh hiện có thể được chạy từ tất cả các mô-đun được tải. Nó sẽ tạo ra một đầu ra trông như thế này:

CommandType     Name                            Definition
-----------     ----                            ----------
Cmdlet          Add-Content                     Add-Content [-Path] <String[...
Cmdlet          Add-History                     Add-History [[-InputObject] ...
Cmdlet          Add-Member                      Add-Member [-MemberType] <PS...
Cmdlet          Add-PSSnapin                    Add-PSSnapin [-Name] <String...
Cmdlet          Clear-Content                   Clear-Content [-Path] <Strin...
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.