Gibt es einen Befehl zum Abrufen einer Liste von cmd-Befehlen in Windows?

Antworten:

20

Für eine Liste von Befehlen:

help

Und für Details zu einem bestimmten Befehl:

help <command>

oder

<command> /?

Beispielsweise:

help xcopy
xcopy /?
Gummi
quelle
Mit können xcopy /?Sie die Informationen zum Befehl abrufen. :)
Avirk
Ist es möglich , von Netzwerk - Befehle auch eine Liste zu erhalten , wie ping, arp, nslookup? Es scheint, dass helpnur eine Liste grundlegender Windows-Befehle und keine Netzwerkbefehle generiert werden.
amiregelz
2
@amiregelz: Das sind Programme in dem windows\system32Ordner, in dem ich glaube, dass es beim Auflösen von Programmen / Befehlen aussieht. Für deine Liste könntest du dort nach Exes suchen. Siehe Olivers Antwort.
George Duckett
14

Eine offizielle Liste finden Sie unter Microsoft Command-Line Reference AZ . Außerdem...

Um Ihre Frage direkt zu beantworten, habe ich ein Skript entwickelt, das einfach alle .exeDateien auflistet , die Sie ausführen können (weil sie sich auf Ihrem befinden PATH). Standardmäßig werden nur diejenigen aufgelistet, in denen sich auch befindet %WINDIR%(es sei denn, Sie führen es mit aus --all).

In einer früheren Iteration des Skripts habe ich jeden Befehl mit gestartet /?, was eine sehr schlechte Idee ist. Nicht jede Anwendung auf dem PATHversteht diesen Parameter. Einige werden einfach gestartet und laufen weiter, anstatt Hilfe auszudrucken. Das verschlingt also ziemlich schnell eine Menge Ressourcen.

@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

Also, da. Auf diese Weise erhalten Sie eine Liste aller verfügbaren Befehle und ihrer Parameter. Wie Sie bereits erwarten können, ist es nicht so nützlich, wie man es sich vorstellen kann.

Hier ist was wirklich wichtig ist!

Interessanter als die .exeDateien auf Ihrem PATHsind die cmd.exeeingebauten. Like IF, FORund SET. Ich habe keine vollständige Liste der eingebauten Funktionen, aber Sie können die meisten davon sehen, indem Sie Folgendes ausführen 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

Zu diesem Zeitpunkt verweist die Hilfe jedoch auf Befehlserweiterungen , sodass die Liste möglicherweise unvollständig ist. Sehen wir uns einige integrierte Funktionen genauer an:

ZUM /?

In der Dokumentation zum FORBefehl sind alle verrückten Parameter aufgelistet, an die Sie übergeben können FOR. Dies ist das Dienstprogramm, mit dem Sie alles schreiben können, was mit Schleifen zu tun hat .

Diese Dokumentation enthält auch die Erklärung für die verrückte "Tilde-Notation":

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

WENN /?

IFist der Befehl zum Verzweigen . Sie benötigen diese Seite, weil sie die Vergleichsoperatoren auflistet:

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

EINSTELLEN /?

SET Ermöglicht die Ausführung einer Vielzahl von Operationen mit Variablen.

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

Es ermöglicht auch die Manipulation von Strings durch die oben erwähnte "Tilde-Notation"

Der Hochstapler
quelle
Glauben Sie, dass es eine Möglichkeit gibt, Befehle abzurufen, die hier aufgeführt sind, aber nicht beim Tippen help? ZB Netzwerk - Befehle wie ipconfig, nslookup, arp, telnetund ping?
amiregelz
@amiregelz: Sollte gut funktionieren, da sie sich in befinden C:\Windows\System32. Ich nehme an, das ist amPATH
Der Hochstapler
Sie werden nicht aufgelistet, obwohl sie sich dort befinden. Es listet das ARP.EXEallerdings auf. Sehen Sie die Befehle, die ich beim Ausführen Ihres Skripts erwähnt habe?
amiregelz
@amiregelz: Ja, aber ich denke, es gibt ein Problem, wenn Ihr PATHeinen Ordner enthält, der nicht mehr existiert. Dadurch bricht das Skript ab. Vielleicht ist das das Problem? Ich arbeite an einer Lösung.
Der Hochstapler
2
@amiregelz: Es scheint auch nicht ratsam zu sein, jede Anwendung auf Ihrem PATH: D
Der Hochstapler
6

Unter dostips.com ( CreateDosCommandIndex.bat ) ist ein Batch-Skript verfügbar, das eine HTML-Datei generiert, die die vollständige Liste der verfügbaren DOS- Befehle auf dem System zusammen mit ihrer jeweiligen Ausgabe enthält, die über "commandname /?"

Ich melde es unten, da dostips.com zu diesem Zeitpunkt Probleme mit dem Laden der Datenbank zu haben scheint und die Website zeitweise funktioniert.

@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
adriano72
quelle
1
Sehr schöner Ansatz. Es hört aber Processing SCfür mich auf. Es scheint jedoch nur auf eine Eingabe zu warten. Also Enter
Der Hochstapler
1
Es ist ziemlich cool (Verarbeiten und Generieren der HTML-Datei), erfordert jedoch, dass Sie das Skript vorher haben, während es nur die Befehle anzeigt, die der helpBefehl anzeigt (was einfacher auszuführen ist). Trotzdem, danke für die Eingabe, es ist sehr nützlich. @OliverSalzburg Da hört es auch für mich auf.
amiregelz,
3

Es ist nicht genau das, wonach Sie nach einer Offline-Lösung suchen (Sie benötigen eine Internetverbindung, um die Webseite zu öffnen), aber es ist ein sehr nützliches Werkzeug und eine Referenz für cmd-Befehle:

Ein AZ-Index der Windows CMD-Befehlszeile.

Diogo
quelle
Es ist nützlich, aber nicht das, wonach ich suche. Danke trotzdem.
amiregelz
@amiregelz es ist eine offline lösung wenn du es zB mit wget herunterlädst.
Barlop
3

Ich weiß, es ist nicht genau das, wonach Sie fragen, aber Sie möchten vielleicht Powershell anstelle der Eingabeaufforderung lernen. Microsoft versucht, die Eingabeaufforderung für Powershell zu beenden, damit es eine gute Fähigkeit ist, dies zu lernen.

Wenn Sie sich in Powershell befinden, listet der Befehl Get-Commandalle Befehle auf, die derzeit von allen geladenen Modulen ausgeführt werden können. Es wird eine Ausgabe erzeugt, die so aussieht:

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...
Scott Chamberlain
quelle