簡體   English   中英

生成幫助文件

[英]Generate help files

我想在Windows cmd的help中為所有命令創建幫助生成器,並將其寫入單獨的文件。 所以你問/? 在cmd中鍵入help時列表中的所有命令。 以下是我的代碼的主要部分:

rem mypath - it's a folder where I put my results
rem In help all command are written by capitals letters
for /f "tokens=1 usebackq" %%i in (`help^|findstr /B /R "[QWERTYUIOPASDFGHJKLZXCVBNM][QWERTYUIOPASDFGHJKLZXCVBNM]"`) do (
  if NOT "%%i"=="GRAFTABL" (
    if NOT "%%i"=="DISKPART" (
      if NOT "%%i"=="SC" (
        help %%i > !mypath!\%%i.txt
      )
    )
  )
)

我在我的Regular exp中使用來自[Q..M]的所有序列,因為只有[AZ]的設置存在一些問題但問題是在我的FOR和IF文件中 - 有REM命令的幫助。 有誰知道為什么會如此? 要修復它,我使用:

FOR/? >%mypath%\FOR.txt
IF/? >%mypath%\IF.txt

但我不明白為什么會這樣。

您在問題中發布的代碼為我提供了正確的結果(甚至在我重新格式化之前)。

請參閱為什么findstr不能正確處理案例(在某些情況下)? 解釋為什么[AZ]與FINDSTR無法正常工作。 有關已知FINDSTR怪癖的詳盡列表,請參閱Windows FINDSTR命令的未記錄的功能和限制是什么?

篩選出命令名稱的更好方法是查找以至少一個非空格字符開頭的行,后跟任意數量的其他非空格字符,后跟2個空格。

如果要忽略某些命令,可以使用帶有/ V選項的附加FINDSTR。

該解決方案成為一個合理的單行程序,可以從命令提示符運行而無需批處理腳本:

for /f %A in ('help^|findstr /rc:"^[^ ][^ ]*  "^|findstr /v "GRAFTABL DISKPART SC"') do @help %A >%A.txt

或者作為可以插入腳本的代碼:

for /f %%A in (
  'help^|findstr /rc:"^[^ ][^ ]*  "^|findstr /v "GRAFTABL DISKPART SC"'
) do help %%A >"!mypath!\%%A.txt"


編輯 - 2015-10-11

HELP輸出的第一行和最后一行以我的英語機器上的單詞For (mixed case)開頭。 該單詞恰好是帶有幫助的有效命令,因此FOR.TXT文件被創建3次。

我假設所有語言都使用混合大小寫的第一行和最后一行。 精煉FINDSTR過濾器以排除第二個字符為空格或小寫字符的任何行並不困難:

for /f %A in ('help^|findstr /rvc:"^.[abcdefghijklmnopqrstuvwxyz ]"^|findstr /v "GRAFTABL DISKPART SC"') do @help %A >%A.txt

我無法重現您的問題,但這對我來說正常工作,我找到了一個更簡單的正則表達式:

@echo off
for /f %%i in ('help^|findstr /B /R [A-Z][^^^^o]') do (
if NOT "%%i"=="GRAFTABL" (
    if NOT "%%i"=="DISKPART" (
        if NOT "%%i"=="SC" (
            help %%i > %%i.txt
            )
        )
    )
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM