เมื่อทำงานกับคอมพิวเตอร์ที่ใช้ Windows ออฟไลน์ (ไม่มีการเชื่อมต่ออินเทอร์เน็ต) เป็นไปได้หรือไม่ที่จะรับ / สร้างรายการคำสั่ง cmd ที่มีอยู่ (รวมถึงการใช้งาน) ผ่านทางบรรทัดคำสั่ง?
เมื่อทำงานกับคอมพิวเตอร์ที่ใช้ Windows ออฟไลน์ (ไม่มีการเชื่อมต่ออินเทอร์เน็ต) เป็นไปได้หรือไม่ที่จะรับ / สร้างรายการคำสั่ง cmd ที่มีอยู่ (รวมถึงการใช้งาน) ผ่านทางบรรทัดคำสั่ง?
คำตอบ:
สำหรับรายการคำสั่ง:
help
และสำหรับรายละเอียดเกี่ยวกับคำสั่งเฉพาะ:
help <command>
หรือ
<command> /?
ตัวอย่างเช่น:
help xcopy
xcopy /?
ping
, arp
, nslookup
? ดูเหมือนว่าhelp
จะสร้างรายการคำสั่งพื้นฐานของ Windows เท่านั้นและไม่ใช่คำสั่งเครือข่าย
windows\system32
โฟลเดอร์ที่ฉันเชื่อว่ามันดูเมื่อแก้ไขโปรแกรม / คำสั่ง สำหรับรายการของคุณคุณสามารถมองหาอดีตมี ดูคำตอบของ Oliver
คุณสามารถค้นหารายชื่ออย่างเป็นทางการได้ที่ อ้างอิง Microsoft บรรทัดคำสั่ง AZ นอกเหนือจากนั้น...
เพื่อตอบคำถามของคุณโดยตรงฉันวางแผนสคริปต์ที่แสดงรายการ.exe
ไฟล์ทั้งหมดที่คุณสามารถดำเนินการPATH
ได้ ตามค่าเริ่มต้นจะแสดงเฉพาะรายการที่อยู่ในนั้น%WINDIR%
(เว้นแต่คุณจะเรียกใช้ด้วย--all
)
ในการทำซ้ำสคริปต์ก่อนหน้านี้ฉันเริ่มทุกคำสั่งด้วย/?
ซึ่งเป็นความคิดที่แย่มาก ไม่ใช่ทุกแอปพลิเคชันที่PATH
เข้าใจพารามิเตอร์นั้น บางคนก็จะเริ่มและยังคงทำงานอยู่แทนที่จะพิมพ์ความช่วยเหลือใด ๆ ดังนั้นการกินทรัพยากรจำนวนมากค่อนข้างเร็ว
@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
ดังนั้นที่นั่น นี่เป็นรายการคำสั่งและพารามิเตอร์ที่มีให้ทั้งหมด อย่างที่คุณคาดไว้แล้วมันไม่มีประโยชน์อย่างที่ใคร ๆ ก็คิดกัน
นี่คือสิ่งที่สำคัญจริงๆ!
น่าสนใจกว่า.exe
ไฟล์ในเครื่องของคุณPATH
เป็นแบบในcmd.exe
ตัว ชอบIF
, และFOR
SET
ฉันไม่มีรายชื่อบิวด์อินทั้งหมด แต่คุณสามารถดูได้โดยการเรียกใช้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
แม้ว่า ณ จุดนั้นความช่วยเหลือคือการอ้างอิงส่วนขยายคำสั่งดังนั้นรายการอาจไม่สมบูรณ์ ลองมาดูในตัวบิวด์อิน:
เอกสารสำหรับFOR
คำสั่งจะแสดงรายการพารามิเตอร์ทั้งหมดที่คุณสามารถส่งผ่านไปFOR
ได้ นี่คือการเดินทางไปยูทิลิตี้ถ้าคุณต้องการที่จะเขียนอะไรที่เกี่ยวข้องกับลูป
เอกสารนี้ยังมีคำอธิบายสำหรับ "เครื่องหมายตัวหนอน" ที่บ้าคลั่ง:
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
IF
เป็นคำสั่งสำหรับการแยกทาง คุณจะต้องหน้านี้เพราะมันจะแสดงรายการตัวดำเนินการเปรียบเทียบ:
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
SET
ช่วยให้คุณสามารถทำการดำเนินการกับตัวแปรที่หลากหลาย
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
นอกจากนี้ยังช่วยให้การจัดการสตริงผ่าน "เครื่องหมายตัวหนอน" ดังกล่าวข้างต้น
C:\Windows\System32
ปรับการทำงานควรที่พวกเขาจะอยู่ใน ฉันคิดว่านั่นคือPATH
ARP.EXE
แม้ว่า คุณเห็นคำสั่งที่ฉันพูดถึงเมื่อคุณรันสคริปต์ของคุณหรือไม่?
PATH
มีโฟลเดอร์ที่ไม่มีอยู่อีกต่อไป ที่ทำให้สคริปต์แตก อาจเป็นปัญหาหรือไม่ ฉันกำลังแก้ไขปัญหา
PATH
: D
มีสคริปต์ชุดงานอยู่ที่ dostips.com ( CreateDosCommandIndex.bat ) ซึ่งสร้างไฟล์ html ที่มีรายการที่สมบูรณ์ของคำสั่ง dos ที่มีอยู่ในระบบพร้อมกับผลลัพธ์ที่สร้างขึ้นผ่าน "commandname /?"
ฉันรายงานด้านล่างนี้เนื่องจาก dostips.com ดูเหมือนว่าจะมีปัญหาเกี่ยวกับการโหลด db ในขณะนี้และเว็บไซต์ของพวกเขาทำงานเป็นระยะ ๆ
@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
Processing SC
สำหรับฉันแม้ว่า แต่ดูเหมือนว่าจะรอเพียงอินพุตเท่านั้น ดังนั้นกดEnter
ให้มันเสร็จ :)
help
แสดงให้เห็นว่าคำสั่ง (ซึ่งจะง่ายต่อการดำเนินการ) ยังคงขอบคุณสำหรับอินพุตมันมีประโยชน์มาก @OliverSalzburg มันหยุดตรงนั้นเพื่อฉันเช่นกัน
มันไม่ได้เป็นสิ่งที่คุณกำลังมองหาวิธีการแก้ปัญหาแบบออฟไลน์ (คุณต้องเชื่อมต่ออินเทอร์เน็ตเพื่อเปิดหน้าเว็บ) แต่เป็นเครื่องมือที่มีประโยชน์มากและการอ้างอิงสำหรับคำสั่ง cmd:
ฉันรู้ว่ามันไม่ใช่สิ่งที่คุณต้องการ แต่คุณอาจต้องการเริ่มเรียนรู้ Powershell แทนการใช้พรอมต์คำสั่ง Microsoft กำลังพยายามยกเลิกพรอมต์คำสั่งสำหรับ Powershell ดังนั้นจึงเป็นทักษะที่ดีในการเรียนรู้
หากคุณอยู่ใน Powershell คำสั่งGet-Command
จะแสดงรายการคำสั่งทั้งหมดที่สามารถเรียกใช้จากโมดูลที่โหลดได้ทั้งหมด มันจะสร้างผลลัพธ์ที่มีลักษณะเช่นนี้:
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...
xcopy /?
เพื่อรับข้อมูลเกี่ยวกับคำสั่ง :)