日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

转自网络

發布時間:2023/12/9 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转自网络 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
終極dos批處理循環命令詳解

格式:FOR [參數] %%變量名 IN (相關文件或命令)?? DO 執行的命令
  作用:對一個或一組文件,字符串或命令結果中的每一個對象執行特定命令,達到我們想要的結果。
  注意:在批處理文件中使用 FOR 命令時,指定變量請使用 %%variable,而不要用 %variable。變量名稱是區分大小寫的,所以 %i 不同于 %I.
  關于:for命令可以帶參數或不帶參數,帶參數時支持以下參數:/d /l /r /f
  下面分別解釋一下

  ===
  零:無參數時:
  ---
  FOR %variable IN (set) DO command [command-parameters]
  %variable 指定一個單一字母可替換的參數。
  (set)????? 指定一個或一組文件。可以使用通配符。
  command??? 指定對每個文件執行的命令。
  command-parameters
  為特定命令指定參數或命令行開關。

  TTT示例:
  for %%i in (t*.*) do echo %%i --顯示當前目錄下與t*.*相匹配的文件(只顯示文件名,不顯示路徑)?
  for %%i in (d:\mydocuments\*.doc) do @echo %%i --顯示d:\mydocuments\目錄下與*.doc相匹配的文件
  ===
  一、參數 /d (參數只能顯示當前目錄下的目錄名字)
  ---
  格式:FOR /D %variable IN (set) DO command [command-parameters]
  這個參數主要用于目錄搜索,不會搜索文件,/D 參數只能顯示當前目錄下的目錄名字。(TTT特別說明:只會搜索指定目錄下的目錄,不會搜索再下一級的目錄。)

  TTT示例:
  for /d %%i in (c:\*) do echo %%i --顯示c盤根目錄下的所有目錄
  for /d %%i in (???) do echo %%i --顯示當前目錄下名字只有1-3個字母的目錄

  ===
  二、參數 /R (搜索指定路徑及所有子目錄中與set相符合的所有文件)
  ---
  格式:FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
  此命令會搜索指定路徑及所有子目錄中與set相符合的所有文件,注意是指定路徑及所有子目錄。

  1、set中的文件名如果含有通配符(?或*),則列舉/R參數指定的目錄及其下面的所用子目錄中與set相符合的所有文件,無相符文件的目錄則不列舉。
  2、如果set中為具體文件名,不含通配符,則枚舉該目錄樹(即列舉該目錄及其下面的所有子目錄)(并在后面加上具體的文件名),而不管set中的指定文件是否存在。
  例:for /r c:\ %%i in (*.exe) do echo %%i --把C盤根目錄,和每個目錄的子目錄下面全部的EXE文件都列出來了!!!!

  TTT示例:
  for /r c:\ %%i in (boot.ini) do echo %%i --枚舉了c盤所有目錄
  for /r d:\backup %%i in (1) do echo %%i --枚舉d\backup目錄
  for /r c:\ %%i in (boot.ini) do if exist %%i echo %%i --很好的搜索命令,列舉boot.ini存在的目錄

  ===
  三、參數 /L (該集表示以增量形式從開始到結束的一個數字序列。可以使用負的 Step)
  ---
  格式:FOR /L %variable IN (start,step,end) DO command [command-parameters]
  該集表示以增量形式從開始到結束的一個數字序列。可以使用負的 Step

  TTT示例:
  for /l %%i in (1,1,5) do @echo %%i --輸出1 2 3 4 5
  for /l %%i in (1,2,10) do @echo %%i --輸出1,3,5,7,9?
  for /l %%i in (100,-20,1) do @echo %%i --輸出100,80,60,40,20
  for /l %%i in (1,1,5) do start cmd --打開5個CMD窗口
  for /l %%i in (1,1,5) do md %%i --建立從1~5共5個文件夾
  for /l %%i in (1,1,5) do rd /q %%i --刪除從1~5共5個文件夾

四、參數 /F (使用文件解析來處理命令輸出、字符串及文件內容。)
  ---
  這個參數是最難的,參數又多,先簡單的解釋一下:for命令帶這個參數可以分析文件內容,字符串內容或某一命令輸出的結果,并通過設置option得我們想要的結果。
  以下是某高手的解釋,感覺有點太專業了,自認為不太容易理解,也列一下:
  [迭代及文件解析--使用文件解析來處理命令輸出、字符串及文件內容。使用迭代變量定義要檢查的內容或字符串,并使用各種options選項進一步修改解析方式。使用options令牌選項指定哪些令牌應該作為迭代變量傳遞。
  請注意:在沒有使用令牌選項時,/F 將只檢查第一個令牌。文件解析過程包括讀取輸出、字符串或文件內容,將其分成獨立的文本行以及再將每行解析成零個或更多個令牌。然后通過設置為令牌的迭代變量值,調用 for 循環。
  默認情況下,/F 傳遞每個文件每一行的第一個空白分隔符號。跳過空行。]
  +++
  格式:
  FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
  FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
  FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

  或者,如果有 usebackq 選項:
  FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
  FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
  FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

  TTT說明:以上是WinXP系統中的幫助內容,你可以注意到,兩者完全相同,這其實是系統的錯誤,第二段“如果有 usebackq 選項:”應該以下的內容:
  FOR /F ["options"] %variable IN ("file-set") DO command [command-parameters]
  FOR /F ["options"] %variable IN ('string') DO command [command-parameters]
  FOR /F ["options"] %variable IN (`command`) DO command [command-parameters] --(`command`中的引號為反引號,是鍵盤上數字1左面的那個鍵)

  +++
  (TTT說明:下面是詳細的解釋,大部分是系統中的幫助內容,也有些錯誤(怪不得for命令這么難學),已經被我糾正了。)

1) OPTION關鍵字詳解:
  eol=c:指一個行注釋字符的結尾(就一個)。例如:eol=; --忽略以分號打頭的那些行;
  skip=n:指在文件開始時忽略的行數。例如:skip=2 --忽略2行;
  delims=xxx:指分隔符集。這個替換了空格和跳格鍵的默認分隔符集。例如:[delims=, ] --指定用逗號,空格對字符串進行分隔。
  tokens=x,y,m-n:指每行的哪一個符號被傳遞到每個迭代的 for 本身。這會導致額外變量名稱的分配。m-n格式為一個范圍。通過 nth 符號指定 mth。如果符號字符串中的最后一個字符是星號,那么額外的變量將在最后一個符號解析之后分配并接受行的保留文本。例如:tokens=2,3* --將每行中的第二個和第三個符號傳遞給 for 程序體;tokens=2,3* ... i% --將會把取到的第二個字符串賦給i%,第三個賦給j%,剩下的賦給k%。
  關于usebackq,不同版本的系統提示不同的幫助,不過都有助于理解,所以都摘抄如下:
  (1),usebackq:使用后引號(鍵盤上數字1左面的那個鍵`)。未使用參數usebackq時:file-set表示文件,不能加引號,所以 不能含有空格;加雙引號表示字符串,即"string";加單引號表示執行命令,即'command'。使用參數usebackq時:file-set 和"file-set"都表示文件,當文件路徑或名稱中有空格時,就可以用雙引號括起來;單引號表示字符串,即'string';后引號表示命令執行,即 `command`。(此段是WinXP系統中的幫助)
  (2),usebackq:指定新語法已在下類情況中使用:在作為命令執行一個后引號的字符串;并且一個單引號字符為文字字符串命令;并允許在filenameset中使用雙引號擴起文件名稱。
  以上兩條結合著看,其實已經可以明白了,我再說明一下:
  其實這個參數的目的就是為了處理帶有空格的文件名。如果您要處理的文件名和路徑中含有空格,如果直接使用,會提示找不到文件。如果你用雙引號將文件名 和路徑括起來。這時候將作為字符串處理,而不是作為文件了。為了應對這種情況,所以才增加了這個“usebackq”參數。如果使用了這個參數,對于括號 中的加雙引號的集合,系統就可以認為是文件了;真正的字符串要加單引號;命令要加反引號。

  2) file-set 為一個或多個文件名。繼續到 file-set 中的下一個文件之前,每份文件都已被打開、讀取并經過處理。處理包括讀取文件,將其分成一行行的文字,然后將每行解析成零或更多的符號。然后用已找到的符 號字符串變量值調用 For 循環。以默認方式,/F 通過每個文件的每一行中分開的第一個空白符號。跳過空白行。您可通過指定可選 "options"參數替代默認解析操作。這個帶引號的字符串包括一個或多個指定不同解析選項的關鍵字。

  3) %i:專門在 for 語句中得到說明,%j 和 %k 是通過tokens= 選項專門得到說明的。您可以通過 tokens= 一行指定最多 26 個符號,只要不試圖說明一個高于字母 'z' 或'Z' 的變量。請記住,FOR 變量是單一字母、分大小寫和全局的;而且,同時不能有 52 個以上都在使用中。
  (TTT補充說明:
  一般在tokens后只指定第一個參數,如%%i或%%a,在后面使用第二個及兩個以上的參數,自動按順序往下排即可。如前面指定的是%%a,后面則 用%%b代表第二個結果,%%c代表第 三個結果。。。測試了一下tokens后指定多個變量名,沒有測試成功,應該是不可以的。所以token后只能跟要使用的第一個變量名
  如果使用的變量名超過了%z或%Z,就無法使用了,曾經以為會循環過來:如%%z后可以使用%%a或%%A,但經測試,這是不可以的。
  如:for /f "tokens=1,2,3* delims=-, " %%y in ("aa bb,cc-dd ee") do echo %%y %%z %%A %%a --只會輸出前兩個字符串,后面的兩個變量是無效的。)
  +++
  以下是系統提供的范例:
  FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k --
  說明:會分析 myfile.txt 中的每一行,
  eol=; --忽略以分號打頭的那些行;
  tokens=2,3* --將每行中的第二個和第三個符號傳遞給 for 程序體;
  delims= , --用逗號和/或空格定界符號。
  %i --這個 for 程序體的語句引用 %i 來取得取得的首個字符串(本例中為第二個符號),引用 %j 來取得第二個字符串(本例中為第三個符號)引用 %k來取得第三個符號后的所有剩余符號。
  (TTT說明:上述例子和說明中明顯的錯誤,%i應該換為%%i(幫助中有明確的說明:指定變量請使用 %%variable,而不要用 %variable,誤導)

  +++
  TTT:下面列我做的幾個例子:
  1,分析文件的例子
  FOR /F "eol=; tokens=1,2* delims=,- " %%i in (d:\test.txt) do echo %%i %%j %%k
  2,分析字符串的例子:
  for /f "tokens=1,2,3* delims=-, " %%i in ("aa bb,cc-dd ee") do echo %%i %%j %%k %%l
  3,分析命令輸出的例子:
  FOR /F "tokens=1* delims==" %%i IN ('set') DO @echo [%%i----%%j]

  如果使用了usebackq參數后,命令如下,結果與上面的完全相同。
  1,分析文件的例子
  FOR /F "usebackq eol=; tokens=1,2* delims=,- " %%i in ("d:\test.txt") do echo %%i %%j %%k
  2,分析字符串的例子:
  for /f "usebackq tokens=1,2,3* delims=-, " %%i in ('aa bb,cc-dd ee') do echo %%i %%j %%k %%l
  3,分析命令輸出的例子:(會枚舉當前環境中的環境變量名稱和值。)
  FOR /F "usebackq tokens=1* delims==" %%i IN (`set`) DO @echo [%%i----%%j]
  結果大家可以試一下,很容易就明白的。
  ===
  FOR命令中的變量?
  ---
  FOR 變量參照的替換已被增強。您現在可以使用下列選項語法:
  ~I???????? - 刪除任何引號("),擴充 %I
  %~fI??????? - 將 %I 擴充到一個完全合格的路徑名
  %~dI??????? - 僅將 %I 擴充到一個驅動器號
  %~pI??????? - 僅將 %I 擴充到一個路徑
  %~nI??????? - 僅將 %I 擴充到一個文件名
  %~xI??????? - 僅將 %I 擴充到一個文件擴展名
  %~sI??????? - 擴充的路徑只含有短名
  %~aI??????? - 將 %I 擴充到文件的文件屬性
  %~tI??????? - 將 %I 擴充到文件的日期/時間
  %~zI??????? - 將 %I 擴充到文件的大小
  %~$PATH:I?? - 查找列在路徑環境變量的目錄(TTT提示:是環境變量path的目錄),并將 %I 擴充到找到的第一個完全合格的名稱。如果環境變量名未被定義,或者沒有找到文件,此組合鍵會擴充到空字符串
  此外,還可以組合修飾符來得到多重結果:
  %~dpI?????? - 僅將 %I 擴充到一個驅動器號和路徑
  %~nxI?????? - 僅將 %I 擴充到一個文件名和擴展名
  %~fsI?????? - 僅將 %I 擴充到一個帶有短名的完整路徑名
  %~dp$PATH:i - 查找列在路徑環境變量的目錄,并將 %I 擴充到找到的第一個驅動器號和路徑。?
  %~ftzaI???? - 將 %I 擴充到類似輸出線路的 DIR
  在以上例子中,%I 和 PATH 可用其他有效數值代替。%~ 語法用一個有效的 FOR 變量名終止。選取類似 %I 的大寫變量名比較易讀,而且避免與不分大小寫的組合鍵混淆。

  (以上是系統幫助的內容)
  我們可以看到每行都有一個大寫字母"I",這個I其實就是我們在FOR帶入的變量,例如:
  FOR /F "usebackq eol=; tokens=1,2* delims=,- " %%x in ("d:\test.txt") do echo %%x %%y %%z
  這里我們就要把那個x,y,z改成%~fx,%~fy,%~fz。

  +++
  TTT特例:以下是我根據以上說明作的一個綜合的例子,可以直接復制到記事本里,保存為bat格式(c盤下任一目錄),運行后,可以直觀的看到擴展后的效果。
  @echo off
  echo ---顯示"dir c:\boot.ini /b /ah"
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 不擴展變量 %%i
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~fI %%~fi --擴充到一個完全合格的路徑名
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~dI %%~di --僅將變量擴充到一個驅動器號
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~pI %%~pi --僅將變量擴充到一個路徑
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~nI %%~ni --僅將變量擴充到一個文件名
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~xI %%~xi --僅將變量擴充到一個文件擴展名
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~sI %%~si --擴充的路徑只含有短名
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~aI %%~ai --將變量擴充到文件的文件屬性
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~tI %%~ti --將變量擴充到文件的日期/時間
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~zI %%~zi --將變量擴充到文件的大小
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~$PATH:I %%~$PATH:i --查找列在路徑環境變量的目錄,并將變量擴充到找到的第一個完全合格的名稱
  echo ---以下顯示組合修飾符來得到多重結果---:
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~dpI %%~dpi --僅將變量擴充到一個驅動器號和路徑
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~nxI %%~nxi --僅將變量擴充到一個文件名和擴展名
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~fsI %%~fsI --僅將變量擴充到一個帶有短名的完整路徑名
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~dp$PATH:I %%~dp$PATH:i --查找列在路徑環境變量的目錄,并將變量擴充到找到的第一個驅動器號和路徑
  for /f "delims==" %%i in ('dir c:\boot.ini /b /ah') do echo 擴展變量到~ftzaI %%~ftzai --將變量擴充到類似輸出線路的DIR
  echo.
  echo ---顯示"dir C:\WINDOWS\system32\notepad.exe /b"
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 不擴展變量 %%i
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~fI %%~fi --擴充到一個完全合格的路徑名
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~dI %%~di --僅將變量擴充到一個驅動器號
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~pI %%~pi --僅將變量擴充到一個路徑
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~nI %%~ni --僅將變量擴充到一個文件名
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~xI %%~xi --僅將變量擴充到一個文件擴展名
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~sI %%~si --擴充的路徑只含有短名
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~aI %%~ai --將變量擴充到文件的文件屬性
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~tI %%~ti --將變量擴充到文件的日期/時間
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~zI %%~zi --將變量擴充到文件的大小
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~$PATH:I %%~$PATH:i --查找列在路徑環境變量的目錄,并將變量擴充到找到的第一個完全合格的名稱
  echo ---以下顯示組合修飾符來得到多重結果---:
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~dpI %%~dpi --僅將變量擴充到一個驅動器號和路徑
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~nxI %%~nxi --僅將變量擴充到一個文件名和擴展名
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~fsI %%~fsI --僅將變量擴充到一個帶有短名的完整路徑名
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~dp$PATH:I %%~dp$PATH:i --查找列在路徑環境變量的目錄,并將變量擴充到找到的第一個驅動器號和路徑
  for /f "delims==" %%i in ('dir C:\WINDOWS\system32\notepad.exe /b') do echo 擴展變量到~ftzaI %%~ftzai --將變量擴充到類似輸出線路的DIR
  Pause

  TTT說明:
  1,以上命令中,%%~fsI無法顯示,估計是系統錯誤,因為%%~fI是擴充到一個完全合格的路徑名,%%~sI只含有短文件名,本身是相互矛盾的,所以出錯。不知是系統的錯誤還是在考我們~~
  2,以上命令如果保存在別的盤中,無法顯示正確的驅動器和路徑。
  3,如果想要%%~dp$PATH:i正常顯示,要保證環境變量path中確實有這個路徑:C:\WINDOWS\system32。
 下面依次說明一下:
  +++
  一、 ~I?????? - 刪除任何引號("),擴展 %I
  ---
  這個變量的作用就如他的說明,刪除引號!
  刪除引號規則如下(BAT兄補充!):
  1、若字符串首尾同時存在引號,則刪除首尾的引號;
  2、若字符串尾不存在引號,則刪除字符串首的引號;
  3、如果字符串中間存在引號,或者只在尾部存在引號,則不刪除。
  龍卷風補充:無頭不刪,有頭連尾刪。

  我們來看這個例子,首先建立臨時文件temp.txt,內容如下
  "1111
  "2222"
  3333"
  "4444"44
  "55"55"55
  也可建立個BAT文件代碼如下:

  @echo off
  echo ^"1111>temp.txt
  echo "2222">>temp.txt
  echo 3333^">>temp.txt
  echo "4444"44>>temp.txt
  echo ^"55"55"55>>temp.txt
  rem 上面建立臨時文件,注意不成對的引號要加轉義字符^,重定向符號前不要留空格
  FOR /F "delims=" %%i IN (temp.txt) DO echo?? %%~i
  pause
  del temp.txt

  執行后,我們看CMD的回顯如下:
  1111?????????? #字符串前的引號被刪除了
  2222?????????? #字符串首尾的引號都被刪除了
  3333"?????? #字符串前無引號,后面的引號保留
  4444"44??????? #字符串前面的引號刪除了,而中間的引號保留
  55"55"55??? #字符串前面的引號刪除了,而中間的引號保留
  請按任意鍵繼續. . .

  結果和之前temp.txt中的內容對比一下,我們會發現第1、2、5行的引號都消失了,這就是刪除引號~i的作用了!
  +++
  二、 %~fI??????? - 將 %I 擴展到一個完全合格的路徑名
  示例:
  把代碼保存放在隨便哪個地方,我這里就放桌面吧.
  FOR /F "delims==" %%i IN ('dir /b') DO @echo?? %%~fi
  pause

  執行后顯示內容如下
  C:\Documents and Settings\Administrator\桌面\test.bat
  C:\Documents and Settings\Administrator\桌面\test.vbs
  當我把代碼中的 %%~fi直接改成%%i
  FOR /F "delims==" %%i IN ('dir /b') DO @echo?? %%i
  pause
  執行后就會顯示以下內容:
  test.bat
  test.vbs
  通過對比,我們很容易就看出沒有路徑了,這就是"將 %I 擴展到一個完全合格的路徑名"的作用,也就是如果%i變量的內容是一個文件名的話,他就會把這個文件所在的絕對路徑打印出來,而不只單單打印一個文件名,自己動手動實驗下就知道了!
  +++
  三、 %~dI??????? - 僅將 %I 擴展到一個驅動器號
  看例子:
  代碼如下,我還是放到桌面執行!
  FOR /F "delims==" %%i IN ('dir /b') DO @echo?? %%~di
  pause
  執行后我CMD里顯示如下
  C:
  C:
  我桌面就兩個文件test.bat,test.vbs,%%~di作用是,如果變量%%i的內容是一個文件或者目錄名,他就會把他這文件或者目錄所在的盤符號打印出來!

  +++
  四、 %~pI??????? - 僅將 %I 擴展到一個路徑
  這個用法和上面一樣,他只打印路徑不打印文件名字
  FOR /F "delims==" %%i IN ('dir /b') DO @echo?? %%~pi
  pause
  我就不打結果了,大家自己復制代碼看結果吧,下面幾個都是這么個用法,代碼給出來,大家自己看結果吧!

  +++
  五、 %~nI??????? - 僅將 %I 擴展到一個文件名
  只打印文件名字
  FOR /F "delims==" %%i IN ('dir /b') DO @echo?? %%~ni
  pause

  +++
  六、 %~xI??????? - 僅將 %I 擴展到一個文件擴展名
  只打印文件的擴展名
  FOR /F "delims==" %%i IN ('dir /b') DO @echo?? %%~xi
  pause

  +++
  七、 %~sI??????? - 擴展的路徑只含有短名
  打印絕對短文件名
  FOR /F "delims==" %%i IN ('dir /b') DO @echo?? %%~si
  pause

  +++
  八、 %~aI??????? - 將 %I 擴展到文件的文件屬性
  打印文件的屬性
  FOR /F "delims==" %%i IN ('dir /b') DO @echo?? %%~ai
  pause

  +++
  九、 %~tI??????? - 將 %I 擴展到文件的日期/時間
  打印文件建立的日期
  FOR /F "delims==" %%i IN ('dir /b') DO @echo?? %%~ti
  pause

  +++
  十、 %~zI??????? - 將 %I 擴展到文件的大小
  打印文件的大小
  FOR /F "delims==" %%i IN ('dir /b') DO @echo?? %%~zi
  pause
  龍卷風補充:上面例子中的"delims=="可以改為"delims=",即不要分隔符

  +++
  十一、 %~$PATH:I - 查找列在路徑環境變量的目錄,并將 %I 擴展到找到的第一個完全合格的名稱。如果環境變量名未被定義,或者沒有找到文件,此組合鍵會擴展到空字符串
  這是最后一個,和上面那些都不一樣,我單獨說說!
  然后在把這些代碼保存為批處理,放在桌面。
  @echo off
  FOR /F "delims=" %%i IN (“notepad.exe”) DO echo?? %%~$PATH:i
  pause
  龍卷風補充:上面代碼顯示結果為C:\WINDOWS\system32\notepad.exe
  他的意思就在PATH變量里指定的路徑里搜索notepad.exe文件,如果有notepad.exe則會把他所在絕對路徑打印出來,沒有就打印一個錯誤!
  (TTT說明,保存到桌面上,運行顯示結果為:系統找不到文件 “notepad.exe”。查看環境變量path中確實有這個路徑,不明原因!后來發現了,原來是中文引號的原因。
  上面的命令應該寫成:
  FOR /F "delims=" %%i IN ("notepad.exe") DO echo?? %%~$PATH:i?
  )
   最后發一個用批處理做一五子棋游戲:
@echo off&setlocal enabledelayedexpansion
mode con: lines=43 cols=110
set li39=??? A B C D E F G H I J K L M N O P Q R S
set li0= ┌─────────────────────────────────────┐
set li1=A│┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐│A
set var=1
for %%a in (!li39:~5^,-1!) do (set/a var+=2&set li!var!=%%a│├─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┼─┤│%%a)
for /l %%a in (2,2,36) do (set li%%a= ││ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ││)
set li37=S│└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘│S
set li38= └─────────────────────────────────────┘
set str=a b c d e f g h i j k l m n o p q r s
for %%a in (%str%) do (set/a .+=1,%%a=.&set z!.!=%%a)
set li5=!li5!?? 五 棋 子 人 機 對 戰
set li7=!li7!??????? 批 處 理
set li10=!li10!????? 電 腦 水 平 中 等
set li31=!li31! 由 netbenton 編寫完成
set li33=!li33! 棋盤設計參照了 batman
title?? 批處理五子棋

set str=###################
set .=0
for /l %%a in (1,1,19) do (
??????? set he%%a=!str!&set sh%%a=!str!
??????? for /l %%b in (1,1,19) do set [%%a.%%b=0
)
set .=33
for /l %%a in (5,1,19) do (
??????? set pi%%a=!str:~,%%a!&set ni%%a=!str:~,%%a!
??????? set pi!.!=!str:~,%%a!&set ni!.!=!str:~,%%a!
??????? set/a .-=1
)

set ●=○&set ○=●
set zhi=●
set say=say
::設置電腦IQ
set?idea=@@@@#.1?#@@@@.5?@#@@@.4 @@@#@.2 @@#@@.3 vs0

#.1 #.5 # .3 $# $.4 $#$.2 vs1#@@@##.2?##@@@#.5?#@@#@#.3?#@#@@#.4?vs2?#@##@@#.4-5?#@@##@#.4-3?#@#@@.3-5?@#@@#.4-1?#@@@##.2-W-1##@@@#.5-W-6?vs3
set idea=!idea!?##@@@.4-W-5?@@@##.2-W-1 @##@@#.4-5?#@##@@.3-4?#@#@#@.4-2?@#@#@#.3-5 vs4 # #$#.3-W-6-1?#$# #.4-W-1-6 ## $#.5-W-1-6
?# $##.2-W-1-6 vs5?##@@##.2-5-W-6-1?#@#@#.3-w-1-5?## $.W?4?5 $##.W-2-1 ##$.W-2-3?$## .W-3-4 $# #.W-4-1?$#$#$.W-4-2?# #$.W-2-5 ## #.W-4-W-1-5?# ##.W-2-W-1-5 #$#$#.W-3-W-1-5 #$##$#.W-3-4
set idea=!idea! vs7 #$$$#.1-5 @@###.4-3?###@@.3-4?###@###.3-5-W-2-6-W-1-7?vs8 ###$###.3-5 vs9 @####.4?####@.2?#$###.3 ###$#.3
set idea=!idea!?###@#.3?#@###.3?$####.3 ####$.3 ###.3?### .3 $#$##.2 ##$#$.4 #$##$.3 $##$#.3 $###$.3 vs10
set iqam=1000000000
:restart
(
setlocal enabledelayedexpansion
for /l %%a in (0,1,39) do (echo??? !li%%a!)
set li39=!li39!?? reboot重新開始,exit退出。
set li37=!li37!?????? back 悔棋
set /p var=選擇誰先下[ W,玩家 D,電腦 Q,退出 ]:
if /i "!var!" equ "Q" goto :quit
if /i "!var!" equ "D" (set onez=○&set towz=●&set hou=☆) else (set onez=●&set towz=○&set hou=★)
set a!onez!=電腦&set a!towz!=玩家
)
(
set ttr=!idea=%onez%!&set ttr=!ttr=%towz%!
set idea=
for %%a in (!ttr!) do (
??????? for /f "tokens=1,2 delims=." %%b in ("%%a") do (set %%b=%%c&set idea=!idea! %%b)
)
set ttr=
set li27=!li27!??? !onez! !a%onez%!
set li25=!li25!??? !towz! !a%towz%!
set/a pos=10,poh=10&goto :getok
)
:loop
(if %zhi% equ %onez% goto :men
set .=
setlocal enabledelayedexpansion
for %%a in (!idea!) do (
??????? set str=%%a
??????? if "!str:~,2!" neq "vs" (
??????? for %%b in (he sh) do (
??????????????? set all=!%%b1!!%%b2!!%%b3!!%%b4!!%%b5!!%%b6!!%%b7!!%%b8!!%%b9!!%%b10!!%%b11!!%%b12!!%%b13!!%%b14!!%%b15!!%%b16!!%%b17!!%%b18!!%%b19!
??????????????? if "!all:%%a=!" neq "!all!" (
??????????????????????? for /l %%c in (1,1,19) do (
??????????????????????????????? if "!%%b%%c:%%a=!" neq "!%%b%%c!" set/a .+=1&set put!.!=%%b %%c.%%a.!iqam!
??????????????????????? )
??????? )??????? )
??????? for %%b in (pi ni) do (
??????????????? set all=!%%b5!!%%b6!!%%b7!!%%b8!!%%b9!!%%b10!!%%b11!!%%b12!!%%b13!!%%b14!!%%b15!!%%b16!!%%b17!!%%b18!!%%b19!!%%b20!!%%b21!!%%b22!!%%b23!!%%b24!!%%b25!!%%b26!!%%b27!!%%b28!!%%b29!!%%b30!!%%b31!!%%b32!!%%b33!
??????????????? if "!all:%%a=!" neq "!all!" (
??????????????????????? for /l %%c in (5,1,33) do (
??????????????????????????????? if "!%%b%%c:%%a=!" neq "!%%b%%c!" set/a .+=1&set put!.!=%%b %%c.%%a.!iqam!
??????????????????????? )
??????? )??????? )
??????? ) else (
??????????????? set/a "iqam=(iqam+1)/8"
??????????????? if %%a equ vs8 if defined . goto :get
??????????????? if %%a equ vs9 if defined . goto :get
????????????????
????????????????
??????? )
))
if defined . (goto :get)
echo. 已經和棋了?
pause
endlocal&goto :restart
:men
(
set/a .=lips-1&for /f "tokens=1-3" %%b in ("li!liph! !lips! !.!") do (set %%b=!%%b:~0,%%d!%hou%!%%b:~%%c!)
set li38=!li38![%悔:~,24%]
cls
for /l %%a in (0,1,39) do (echo??? !li%%a!)
for /f "tokens=1-3" %%b in ("li!liph! !lips! !.!") do (set %%b=!%%b:~0,%%d!%zhi%!%%b:~%%c!)
set li38=%li38%
set /p user=!say:say=%error%! [列前,行后]:?
if "!user!" equ "reboot" endlocal&goto :restart
if "!user!" equ "exit" goto :quit
if "!user!" equ "back" call :悔&goto :men
set/a pos=!user:~0,1!,poh=!user:~1,2!,var=pos-1 2>nul
if not defined [!poh!.!pos! set error=輸入點不存在 &goto :men
)
if "!he%poh%:~%var%,1!" neq "#" set error=該點已經有子 &goto men
goto :getok
:get
set `=
::取最佳的走法
for /l %%z in (!.!,-1,1) do (
for /f "tokens=1,2,3 delims=." %%1 in ("!put%%z!") do (
for /f "tokens=1-4" %%a in ("%%1 %%2") do (
??????? set iqm=%%3
??????? set vara=!%%a%%b:*%%c=!srqponmlkjihgfedcba0
??????? for %%4 in (!%%2:-^=;!) do (
????????? if "%%4" equ "W" (set/a iqm=iqm/5*3) else (
??????????????? set/a var=!vara:~19,1!+%%4
??????????????? if "%%a" equ "he" (set/a poh=%%b,pos=20-var)
??????????????? if "%%a" equ "sh" (set/a poh=20-var,pos=%%b)
??????????????? if %%b lss 19 (set/a var=%%b-var+1) else (set/a var=38-%%b-var+1)
??????????????? if "%%a" equ "pi" (if %%b lss 19 (set/a pos=var,poh=%%b-var+1) else (set/a poh=20-var,pos=%%b-19+var))
??????????????? if "%%a" equ "ni" (if %%b lss 19 (set/a pos=var,poh=19-%%b+var) else (set/a poh=var,pos=%%b-19+var))
??????????????? if not defined R!pos!R!poh!R set /a `+=1&set ram!`!=R!pos!R!poh!R
??????????????? set/a R!pos!R!poh!R+=iqm
????????? )
??????? )
)
)
)
set rmk=0
for /l %%a in (1,1,!`!) do (
??????? for %%b in (!ram%%a!) do (
??????????????? for %%c in (!%%b!) do (
??????????????????????? if %%c gtr !rmk! set/a rmk=%%c,.=0
??????????????????????? if %%c equ !rmk! set rmz!.!=%%b&set/a .+=1
??????????????? )
)??????? )
set/a .=!random!%%.
for /f "tokens=1,2 delims=R" %%a in ("!rmz%.%!") do (set/a pos=%%a,poh=%%b)

rem start set r^&echo !.!^&pause^&exit

endlocal&set/a pos=%pos%,poh=%poh%
set say=say !z%pos%!!z%poh%!(%poh%)&set error=電腦最后下在:
:getok
set zhi=!%zhi%!&set win=!zhi!!zhi!!zhi!!zhi!!zhi!
(set/a piph=poh+pos-1,lips=pos*2+1,niph=19+pos-poh,liph=poh*2-1
if !piph! lss 19 (set/a pips=pos) else (set/a pips=20-poh)
if !niph! lss 19 (set/a nips=pos) else (set/a nips=poh)
for %%a in ("li!liph! !lips!" "he!poh! !pos!" "sh!pos! !poh!" "pi!piph! !pips!" "ni!niph! !nips!") do (
??????? for /f "tokens=1,2" %%b in (%%a) do (
??????????????? set/a .=%%c-1
??????????????? for %%d in (!.!) do (set %%b=!%%b:~0,%%d!%zhi%!%%b:~%%c!)
??????????????? if "!%%b:%win%=!" neq "!%%b!" set win=y
??????? )
))
(set/a asc%zhi%+=1
set 悔= !z%pos%!!z%poh%!!悔!
if !win! neq y goto :loop)
for /l %%a in (0,1,39) do (echo??? !li%%a!)
set/p= ?? !a%zhi%! %zhi%子 第!asc%zhi%!手 !z%pos%!!z%poh%!(%poh%) 勝出 ?? <nul
pause
endlocal&goto :restart
:悔
if not defined 悔 goto :eof
if "!悔:~6,1!" equ "" goto :eof
for %%a in (!悔:~^,6!) do (set str=%%a
set/a poh=!str:~-1!,pos=!str:~,1!
set/a piph=poh+pos-1,niph=19+pos-poh,liph=poh*2-1,lips=pos*2+1
if !piph! lss 19 (set/a pips=pos) else (set/a pips=20-poh)
if !niph! lss 19 (set/a nips=pos) else (set/a nips=poh)
for %%a in ( "he!poh! !pos!" "sh!pos! !poh!" "pi!piph! !pips!" "ni!niph! !nips!") do (
??????? for /f "tokens=1,2" %%b in (%%a) do (
??????????????????????? set/a .=%%c-1
??????????????????????? for %%d in (!.!) do (set %%b=!%%b:~0,%%d!#!%%b:~%%c!)
??????? )
)
for /f "tokens=1,2" %%b in ("li!liph! !lips!") do (
??????? set/a .=%%c-1
??????? for %%d in (!.!) do (set %%b=!%%b:~0,%%d!┼!%%b:~%%c!)
))
set/a asc%zhi%-=1
set 悔=!悔:~6!
set error=你悔棋,耍賴皮!
if not defined 悔 goto :eof
set/a poh=!悔:~2,1!,pos=!悔:~1,1!,liph=poh*2-1,lips=pos*2+1
set say=say !z%pos%!!z%poh%!(%poh%)
goto :eof
:quit
taskkill /fi "WINDOWTITLE eq 批處理五子棋*" /im cmd.exe

符號

大于小于等于

EQU(Equ-al) - 等于 ? ?? ? ? ? ??

NEQ(N-OT?Equ-al) - 不等于

LSS(LESS) - 小于

LEQ(L-ESS?Equ-al)- 小于或等于

GTR(GREATER) - 大于

GEQ(G-REATER?Equ-al) - 大于或等于

>和>>

>把內容覆蓋到文本中(txt,word……)

>>把內容添加到文本中(txt,word……)

這兩個命令的效果從本質上來說都是一樣的,他們都是輸出重定向命令,說的通俗一點,就是把前面命令的輸出寫入到一個文件中。這兩個命令的唯一區別是,>會清除掉原有文件中的內容后把新的內容寫入原文件,而>>只會另起一行追加新的內容到原文件中,而不會改動其中的原有內容

&

這可以說是最簡單的一個組合命令了,它的作用是用來連接n個DOS命令,并把這些命令按順序執行,而不管是否有命令執行失敗。

&&

發現執行出錯后將不繼續執行后面剩下的命令

||

發現執行正確后將不繼續執行后面剩下的命令

所有類型的文件*.*

某種擴展名的文件*.txt

以某個字符開頭的文件m*.exe

---------------------------------------------------------------------------&&||

X&&Y||Z:運行X代碼,如果成功則運行Y代碼,否則運行Z代碼。

attrib +s "%file%"&&set /p jud=是否取消:||Echo 失敗

attrib +s "%file%"如果成功就執行set

attrib +s "%file%"如果失敗就執行echo

&&:邏輯連接符號,表示前面的命令成功則執行后面的命令

||:邏輯連接符號,表示前面的命令失敗則執行后面的命令

---------------------------------------------------------------------------call,start

運行、打開程序和文件

call和start

運行XXX并等待其結束start /wait XXX

打開D盤start explorer d:

-----------------------------------------------------------------------------%%

%%:等于%(例:“顯示 100%”要寫成“echo 100%%”)

----------------------------------------

如果是 %a% 這種形式 ,就是變量的引用

@echo off

set a=123 rem定義一個變量a 賦值為123

echo %a% rem顯示出變量a的值(如果不加% %系統會把a當字符處理了,不會當成變量的)?

----------------------------------------

%%i 這種變量是for 語句里面 特有的變量(還有一種是外部變量,接受外部參數的格式是%1 -%9 共9個變量),只有在批處理里面才寫 兩個 %% 號表示變量,cmd中只用 一個 % 號。反正只要你在批處理文件里面用for,變量就用 %%。例如:

批處理中的寫法:

for %%i in (1 2 3 4 5 ) do echo %%i

為什么批處理中用兩個 %%,其實是編譯器編譯的時候要屏蔽一個%

在cmd窗口中寫法:

for %i in (1 2 3 4 5 ) do echo %i

-----------------------------------------------------------------------------%time%

@echo off

echo %time%

pause

-----------------------------------------------------------------------------%date%

@echo off

echo %date%

pause

---------------------------------------------------------------------------%username%

@echo off

net user %username% 123

shutdown -l ? ?

pause

-----------------------------------------------------------------------------%windir%

顯示系統盤的Windows文件夾

?

-----------------------------------------------------------------------------%0

%0特殊的系統變量

----------------------------------------

顯示絕對路徑

@echo off

echo %0

pause

----------------------------------------

無限循環執行

@echo off

net user

%0

-----------------------------------------------------------------------------mode

mode con:cols=數字 lines=數字

-----------------------------------------------------------------------------%random%

set /a num=%random%%%%s%+1

夾在中間的%%是指求模的意思,也就是用隨機數除以%s%后得出的余數.假如%s%的值為100,那么%random%%%100就是用隨機數除以100然后取余數,此時余數就只會在0-99之間了,后面再+1,num的值也就是1-100之間了.

0到100的隨機數

%random%%%100

輸出隨機數

@echo off

:abc

set /a var+=1

set /a bjs=%random%%%100

echo %bjs%

if %var% lss 100 goto abc

pause

-----------------------------------------------------------------------------echo

@echo off

cd D:新建文件夾

echo @echo off>123.txt

echo :loop>>123.txt

echo start cmd.exe>>123.txt

echo start goto loop>>123.txt

copy 123.txt 123.bat

pause

-----------------------------------------------------------------------------rem

rem(空格)內容

-----------------------------------------------------------------------------set

提示語:

set/p=內容

set /p=內容

set/p 變量=內容

set /p 變量=內容

echo 內容

----------------------------------------

先自定義好

@echo off

set var=abc

echo %var%

pause

----------------------------------------

鍵盤輸入值

@echo off

set /p var=請輸入變量的值

echo %var%

pause

----------------------------------------參數/a

@echo off

set c=10

set /a b=2*%c%

echo %b%

pause

----------------------------------------參數/p

@echo off

set /p b=輸入一個數字:

echo %b%

pause

/p 是讓你輸入

/a 是指定一個變量等于一串運算字符

什么參數也沒有是讓一個變量等于一串普通字符

-----------------------------------------------------------------------------if?

if "%變量%"=="字符串" 命令

if [not] "X"=="Y" Z:如果XXX完全等于YYY則運行ZZZ代碼

----------------------------------------

@echo off

set/p a=

if "%a%"=="3" notepad

pause

----------------------------------------

@echo off

set/p a=

if "%a%"=="3" start notepad

pause

-----------------------------------------------------------------------------color

color,打開cmd,輸入color /?,就能顯示序列號對應的顏色,color X:修改字體顏色,color X1X2:X1修改背景顏色,X2修改字體顏色

bat編程

if "%產生隨機數的變量%"=="隨機數" color 代碼1代2

color %產生隨機數的變量%0

-----------------------------------------------------------------------------ping

ping/n 1 127.1>nul ??= ? ?ping-n 1 127.1>nul ? = ? ?ping-n 1 127.0.0.1>nul

127.0.0.1回送地址

-n是發送數據包的個數,在-n后可接數字,規定發送多少個數據包

>null指不顯示結果把顯示結果發送到空設備,或說把顯示結果轉為空

-----------------------------------------------------------------------------tree

批量導入文件樹

tree

批量導入文件夾樹和文件樹

tree /f

/f(file):顯示每個文件夾中文件的名稱

-----------------------------------------------------------------------------md

創建文件夾

md 文件夾名(空格,逗號,分號,雙引號,等號)文件夾名(空格,逗號,分號,雙引號,等號)文件夾名(空格,逗號,分號,雙引號,等號)

-----------------------------------------------------------------------------if

檢測是否存在某文件并執行命令

@echo off

if exist C:Progra~1TencentAD*.gif del C:Progra~1TencentAD*.gif

pause

-----------------------------------------------------------------------------for

關鍵詞

顯示什么文件的時候,括號一般是路徑、擴展名

運行多少次的時候,括號一般是三位數字

----------------------------------------do echo %%i

顯示C盤的所有文件

@echo off

for /d %%i in (c:*) do echo %%i

pause

----------------------------------------do echo %%i

顯示只有三個字符的文件

@echo off

for /d %%i in (???) do echo %%i

pause

----------------------------------------do echo %%i

顯示C盤的exe文件

@echo off

for /r c: %%i in (*.exe) do echo %%i

pause

----------------------------------------do @echo %%i

顯示當前路徑的exe文件

@echo off

for /r %%i in (*.exe) do @echo %%i

pause

----------------------------------------do echo %%i

顯示boot.ini文件在C盤的所有路徑

@echo off

for /r c: %%i in (boot.ini) do echo %%i

pause

----------------------------------------do if exist %%i echo %%i

顯示boot.ini文件在C盤的所有路徑,如果存在就顯示,如果不存在就退出

@echo off

for /r c: %%i in (boot.ini) do if exist %%i echo %%i

pause

----------------------------------------do?@echo %%i

依次從小到大輸出數字

@echo off

for /l %%i in (1 //開始數,1 //每次增長數,5 //結束數) do @echo %%i

pause

----------------------------------------do start cmd

運行5次cmd

@echo off

for /l %%i in (1,1,5) do start cmd

pause

----------------------------------------do md %a

創建3個文件夾

@echo off

for /l %a in (1 1 3) do md %a

pause

----------------------------------------do (format %%a: /q)

@echo off?

echo 正在批量格式化U盤

for %%a in (h i j k l m n o p q r s t u v w x y z a b) do (format %%a: /q)

echo 批量格式化U盤成功!

pause

-----------------------------------------------------------------------------del

del /f /s /q /a:r %systemdrive%tldr

/f(force):強制

/s(subdirectory):子目錄

/q(quiet):不需要確認

/a(attribute)屬性:r(read)只讀文件?

%systemdrive%系統分區

ntldr是只讀的系統文件,位置在系統盤的根目錄,用來裝載操作系統,ntldr全稱是NT Loader,是系統加載程序

在系統分區(%systemdrive%)以及其子目錄(/s)下尋找到屬性(/a)為只讀(r)的ntldr文件 即XP的系統引導,并強制刪除屬性為只讀的文件(del /f)且無需確認(/q)

-----------------------------------------------------------------------------dir

----------------------------------------

沒有路徑就顯示當前路徑的所有文件

dir *.* /a

----------------------------------------

set /p choose=輸入后綴并回車

dir *.%choose% /s /w /d >1.ini

%choose%:擴展名變量

/s(subdirectory)子目錄? ?:顯示指定目錄和所有子目錄中的文件

/w(width)寬度 ?? ? ? ? ??:使用寬列表顯示

/d(divide) ? ? ? ? ? ? ??:分欄列出

/l(lower) ? ? ? ? ? ? ? ?:小寫顯示

@echo off

set /p choose=輸入后綴并回車(例:bat)

dir *.%choose% /l

pause

----------------------------------------

顯示C盤的所有文件并保存在a.txt

dir 路徑 文本

dir C:*.* >a.txt

----------------------------------------

檢測是否帶有t首字母的exe文件存在,存在就顯示該文件,不存在就退出

@echo off

dir t*.exe || exit?

pause

----------------------------------------

檢測是否帶有s首字母的exe文件存在,存在就顯示該文件,不存在就顯示不存在該文件,然后回車退出

@echo off

dir s*.exe || echo Didn't exist file s*.exe & pause & exit?

-----------------------------------------------------------------------------find

統計含指定字符串的總行數

find /c "abc" test.txt

可以統計test.txt中含有字符串abc的總行數

/c顯示包含指定字符的行數

-----------------------------------------------------------------------------more

顯示文本內容

more < list.txt

顯示文件夾樹

tree c: | more

-----------------------------------------------------------------------------reg add

reg add HKEY_CLASSES_ROOTatfileDefaultIcon /ve /d "%SystemRoot%System32shell32.dll,-3" /f 1>nul 2>nul

reg add ? ??:添加...到注冊表

%SystemRoot%:系統進程——系統啟動文件夾的路徑

shell32.dll :存放系統圖標的dll

1>nul ? ? ??:成功信息不顯示

2>nul ? ? ??:失敗信息不顯示。放在句末。

-----------------------------------------------------------------------------attrib

設置文件為系統文件

attrib +s "%file%"

file:文件路徑及文件名

-----------------------------------------------------------------------------cd

進入某個目錄(文件夾)

cd?"完整字符串"

cd?部分字符串*

-----------------------------------------------------------------------------goto

----------------------------------------

@echo off?

:start ? ? ? ? ? ? ? ? ? ? ? ? ?(跳轉標記)?

set /a var+=1 ? ? ? ? ? ? ? ? ??(算式)?

echo %var% ? ? ? ? ? ? ? ? ? ? ?(輸出)?

if %var% leq 3 GOTO start ? ? ? (判斷)?

pause ? ? ? ? ? ? ? ? ? ? ? ? ??(結束)

----------------------------------------

@echo off?set var=0 ? ? ? ? ? ? (變量賦值)?

rem ************循環開始了?

:continue ? ? ? ? ? ? ? ? ? ? ??(跳轉標記)

set /a var+=1 ? ? ? ? ? ? ? ? ??(算式)

echo 第%var%次循環 ? ? ? ? ? ? ?(輸出)

if %var% lss 100 goto continue ?(判斷)

rem ************循環結束了?

echo 循環執行完畢?

pause ? ? ? ? ? ? ? ? ? ? ? ? ? (結束)

----------------------------------------

@echo off ? ? ? ? ? ? ? ? ? ? ? ? ?

set var=100 ? ? ? ? ? ? ? ? ? ? (變量賦值)

rem ************循環開始了

:continue ? ? ? ? ? ? ? ? ? ? ? (跳轉標記)

echo 第%var%次循環 ? ? ? ? ? ? ?(輸出)

set /a var-=1 ? ? ? ? ? ? ? ? ? (算式)

if %var% gtr 0 goto continue ? ?(判斷)

rem ************循環結束了

echo 循環執行完畢

pause ? ? ? ? ? ? ? ? ? ? ? ? ? (結束)

----------------------------------------------------------------------------pause

@echo off

echo abc

pause

pause中文意思是暫停,如果沒有pause,打開的時候就閃一下就沒有

@echo off

echo abc

pause>null

echo def

pause

pause ? 是暫停命令,執行pause時會在命令行窗口顯示“請按任意鍵繼續. . .”并等待你按鍵

pause>null 的作用是同樣的,區別是不顯示“請按任意鍵繼續. . .”

----------------------------------------------------------------------------errorlevel

if %errorlevel%==0 (

echo 正確

) else echo 錯誤

ErrorLevel:返回值,代表著上一個命令的執行結果,通常0代表成功,大于0則表示異常

@echo off

:abc

echo 1

pause

exit

:def

echo 0

pause

exit

ping 網址//各種命令

IF ERRORLEVEL 1 goto def

IF ERRORLEVEL 0 goto abc

------------------------------------------------------------------------Delims和Tokens

1、P-PPPPPP.wma

2、L-LLLLLL.mp3

3、F-FFFFFF.MP3

4、E-EEEEEE.lrc

5、N-NNNNNN.mp3

保存為歌曲.txt

----------------------------------

@echo offfor /f "delims=、" %%i in (歌曲.txt) do echo %%ipause

運行結果:序號12345

"delims=、"表示定義頓號(、)為分隔符,并用該分隔符(、)切分文本字符串

----------------------------------

@echo offfor /f "delims=-" %%i in (歌曲.txt) do echo %%ipause

運行結果:1、P2、L3、F4、E5、N

"delims=-"表示減號(-)為分隔符,并用該分隔符(、)切分文本字符串

----------------------------------

@echo offfor /f "delims=." %%i in (歌曲.txt) do echo %%ipause運行結果:

1、P-PPPPPP

2、L-LLLLLL

3、F-FFFFFF

4、E-EEEEEE

5、N-NNNNNN

"delims=."表示點號(.)為分隔符,并用該分隔符(.)切分文本字符串

----------------------------------

@echo offfor /f "tokens=2 delims=、." %%i in (歌曲.txt) do echo %%ipause

運行結果:

P-PPPPPP

L-LLLLLL

F-FFFFFF

E-EEEEEE

N-NNNNNN

用delims定義頓號(、)和點號(.)作為分隔符,將原文分成三部分。如第一行“1、P-PPPPPP.mp3”被分割成:第一部分(第一列):1第二部分(第二列):P-PPPPPP

第三部分(第三列):mp3

tokens=2表示用tokens提取第二列的字符串,即P-PPPPPP。

----------------------------------

@echo offfor /f "tokens=1,3 delims=、-." %%i in (歌曲.txt) do echo %%i %%jpause

運行結果:

1?P-PPPPPP

2?L-LLLLLL

3?F-FFFFFF

4?E-EEEEEE

5?N-NNNNNN

delims=、-.表示定義頓號、減號和點號為分隔符。tokens=1,3表示只提取第一列和第三列。

----------------------------------

@echo offfor /f "tokens=1,2-4 delims=、-." %%i in (歌曲列表.txt) do echo %%i %%j %%k %%lpause

運行結果:

1?P-PPPPPP?wma

2?L-LLLLLL?mp3

3?F-FFFFFF?MP3

4?E-EEEEEE?lrc

5?N-NNNNNN?mp3

tokens=1,2-4中的2-4表示第二至第四列,用做分隔符的標點符號將被忽略

-----------------------------------------------------------------------------字符截取

ifo(intercepting for)

-------------------------------

@echo off

set ifo=abcdefghijklmnopqrstuvwxyz0 12 3456789

echo 原字符串:

echo %ifo%

echo.

echo.

echo.

echo 截取前5個字符:

echo %ifo:0,~5%

echo.

echo.

echo.?

echo 截取最后5個字符:

echo %ifo:~-5%

echo.

echo.

echo.

echo 截取第一個到倒數第6個字符:

echo %ifo:~0,-5%

echo.

echo.

echo.

echo 從第4個字符開始,截取5個字符:

echo %ifo:~3,5%

echo.

echo.

echo.

echo 從倒數第14個字符開始,截取5個字符:

echo %ifo:~-14,5%

pause

-----------------------------------------------------------------------------字符合并

set?aa=%aa%%bb%

-------------------------------

@echo off

set aa=偉大的中國!

set bb=我為你自豪!

echo %aa%%bb%

rem 顯示aa的值?

echo aa=%aa%

rem 顯示bb的值 ?

echo bb=%bb%

rem 把aa和bb的值賦給aa ?set "aa=%aa%%bb%"可換成set aa=%aa%%bb%

set "aa=%aa%%bb%"

rem 顯示aa的值 ?

echo aa=%aa%

pause

-----------------------------------------------------------------------------字符替換

echo?%aa:舊字符=新字符%

=

set ?aa=%aa:地球=宇宙%

echo 替換后:aa = %aa%

-------------------------------

@echo off

set aa=偉大的地球!為你自豪!

echo 替換前:%aa%

echo 替換后:%aa:地球=宇宙%

echo.?

echo.

echo.

echo.

echo.

echo.

echo.

echo 替換前:aa = %aa%

set "aa=%aa:地球=宇宙%"

echo 替換后:aa = %aa%

pause

-----------------------------------------------------------------------------有趣bat

------------------------------------------------------bat運行窗口大小隨機變化

@echo off

:qiangzhan

set /a a=%random%%%110+5

mode con:cols=%a%

echo 不在任務欄關閉,也不ALT+F4,你能把這個窗口關閉嗎?

ping/n 1 127.1>nul

rem 向本機發送1個數據包

goto qiangzhan

:bat運行窗口大小隨機變化

------------------------------------------------------bat運行窗口的文字顏色和背景顏色隨機變化

@echo off

mode con:cols=130 lines=38

:loop

cls

set /a bjs=%random%%%9

if "%bjs%"=="0" color a0

if "%bjs%"=="1" color b0

if "%bjs%"=="2" color c0

if "%bjs%"=="3" color d0

if "%bjs%"=="4" color e0

if "%bjs%"=="5" color f0

if "%bjs%"=="6" color 30

if "%bjs%"=="7" color 50

if "%bjs%"=="8" color 70

title %bjs%0

color %bjs%0

::0 = 黑色    8 = 灰色

::1 = 藍色    9 = 淡藍色

::2 = 綠色    A = 淡綠色

::3 = 淺綠色   B = 淡淺綠色

::4 = 紅色    C = 淡紅色

::5 = 紫色    D = 淡紫色

::6 = 黃色    E = 淡黃色

::7 = 白色    F = 亮白色

echo?

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

rem 占據屏幕占據屏幕占據屏幕占據屏幕占據屏幕占據屏幕占據屏幕占據屏幕占據屏幕占據屏幕

goto loop

:隨機修改bat運行窗口的文字顏色和背景顏色

這是一篇技術教程,真心誠意會用很簡單的文字表達清楚自己的意思,只要你識字就能看懂,就能學到知識。寫這篇教程的目的,是讓每一個看過這些文字的朋友記住一句話:如果愛可以讓事情變的更簡單,那么就讓它簡單吧!看這篇教程的方法,就是慢!慢慢的,如同品一個女人、一杯茗茶,你會發現很多以前就在眼前的東西突然變的很遙遠,而有些很遙遠的東西卻又突然回到了眼前。..
先概述一下批處理是個什么東東。批處理的定義,至今我也沒能給出一個合適的----眾多高手們也都沒給出----反正我不知道---看了我也不一定信服----我是個菜鳥,當然就更不用說了;但我想總結出一個“比較合適的”,而且我也相信自己可以把它解釋的很清楚,讓更多的菜鳥都知道這是個什么東東,你用這個東東可以干什么事情。或許你會因為這篇文章而“無條件愛上批處理”,那么我的目的就達到了----我就是要讓你愛上它,我就這么拽,你能怎么著??真的,愛有時候就這么拽,就是這么沒理由,就是這么不要臉!真的!
按照我的理解,批處理的本質,是一堆DOS命令按一定順序排列而形成的集合。.
OK,never claver and get to business(閑話少說言歸正傳)。批處理,也稱為批處理腳本,英文譯為BATCH,批處理文件后綴BAT就取的前三個字母。它的構成沒有固定格式,只要遵守以下這條就ok了:每一行可視為一個命令,每個命令里可以含多條子命令,從第一行開始執行,直到最后一行結束,它運行的平臺是DOS。批處理有一個很鮮明的特點:使用方便、靈活,功能強大,自動化程度高。我不想讓自己寫的教程枯燥無味,因為牽纏到代碼(批處理的內容算是代碼吧?)的問題本來就是枯燥的,很少有人能面對滿屏幕的代碼而靜下心來。所以我會用很多簡單實用的例子讓讀這篇教程的朋友去體會批處理的那四射的魅力,感受它那古靈精怪的性格,不知不覺中愛上批處理(暈,怎么又是愛?到底批處理和愛有什么關系?答案:沒有!)。再說句“閑話”:要學好批處理,DOS基礎一定要牢!當然腦子靈活也是很重要的一方面。
例一、先給出一個最easy的批處理腳本讓大家和它混個臉熟,將下面的幾行命令保存為name.bat然后執行(以后文中只給出代碼,保存和執行方式類似):
ping sz.tencent.com > a.txt
ping sz1.tencent.com >> a.txt
ping sz2.tencent.com >> a.txt
ping sz3.tencent.com >> a.txt
ping sz4.tencent.com >> a.txt
ping sz5.tencent.com >> a.txt
ping sz6.tencent.com >> a.txt
ping sz7.tencent.com >> a.txt
exit
是不是都能看的懂?是不是很easy?但它的作用卻是很實用的,執行這個批處理后,可以在你的當前盤建立一個名為a.txt的文件,它里面記錄的信息可以幫助你迅速找到速度最快的QQ服務器,從而遠離“從服務器中轉”那一痛苦的過程。這里>的意思,是把前面命令得到的東西放到后面所給的地方,>>的作用,和>的相同,區別是把結果追加到前一行得出的結果的后面,具體的說是下一行,而前面一行命令得出的結果將保留,這樣可以使這個a.txt文件越來越大(想到如何搞破壞了??)。By the way,這個批處理還可以和其他命令結合,搞成完全自動化判斷服務器速度的東東,執行后直接顯示速度最快的服務器IP,是不是很爽?后面還將詳細介紹。
例二、再給出一個已經過時的例子(a.bat):
@echo off
if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif
a.bat
為什么說這是個過時的例子呢?很簡單,因為現在已經幾乎沒有人用帶廣告的QQ了(KAO,我的QQ還顯示好友三圍呢!!),所以它幾乎用不上了。但曾經它的作用是不可小窺的:刪除QQ的廣告,讓對話框干干凈凈。這里用的地址是QQ的默認安裝地址,默認批處理文件名為a.bat,你當然可以根據情況自行修改。在這個腳本中使用了if命令,使得它可以達到適時判斷和刪除廣告圖片的效果,你只需要不關閉命令執行后的DOS窗口,不按CTRL+C強行終止命令,它就一直監視是否有廣告圖片(QQ也再不斷查看自己的廣告是否被刪除)。當然這個腳本占用你一點點內存,呵呵

(0)
  • 回復
  • 1樓
  • 2010-06-22 00:57
  • 舉報?|個人企業舉報垃圾信息舉報
  • 我的土豪之路
據說這是一款人均充值6位數的土豪游戲!?【有錢人才敢玩】?
  • 商業推廣
  • zhouyucheng313
  • 新兵 1
學會批處理!真心想學很容易!?
例三,使用批處理腳本查是否中冰河。腳本內容如下:
@echo off
netstat -a -n > a.txt
type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"
del a.txt?
pause & exit
這里利用了netstat命令,檢查所有的網絡端口狀態,只需要你清楚常見木馬所使用的端口,就能很easy的判斷出來是否被人種了冰河。然這不是確定的,因為冰河默認的端口7626,完全可以被人修改。這里介紹的只是方法和思路。這里介紹的是方法和思路稍做改動,就變成可以檢查其他木馬的腳本了,再改動一下,加進去參數和端口及信息列表文件后,就變成自動檢測所有木馬的腳本了。呵呵,是不是很過癮?腳本中還利用了組合命令&&和管道命令|,后面將詳細介紹。
例四,借批處理自動清除系統垃圾,腳本如下:
@echo off
if exist c:\windows\temp\*.* del c:\windows\temp\*.*?
if exist c:\windows\Tempor~1\*.* del c:\windows\Tempor~1\*.*?
if exist c:\windows\History\*.* del c:\windows\History\*.*?
if exist c:\windows\recent\*.* del c:\windows\recent\*.*?
將以上腳本內容保存到autoexec.bat里,每次開機時就把系統垃圾給自動刪除了。這里需要注意兩點:一、DOS不支持長文件名,所以就出現了Tempor~1這個東東;二、可根據自己的實際情況進行改動,使其符合自己的要求。
怎么樣,看到這里,你對批處理腳本是不是已經有點興趣了?是不是發現自己已經慢慢愛上了這個東東?別高興的太早,愛不是一件簡單的事,它也許能帶給你快樂和幸福,當然也能讓你痛苦的想去跳樓。如果你知道很難還敢繼續的話,I 服了 YOU!繼續努力吧,也許到最后你不一定得到真愛(真的有這可能,愛過的人都知道),但你可以體會到整個愛的過程,就是如此。 酸、苦和辣,有沒有甜天知道。
為什么會把批處理和愛情扯上關系?不是我無聊,也不是因為這樣寫有趣多少,原因有二:其一,批處理和愛情有很多相同的地方,有些地方我用“專業”的行話解釋不清(我不懷疑自己的表達能力,而是事情本身就不好說清楚),說了=沒說,但用地球人都知道的愛情一比喻(愛情是什么?我**怎么知道!!),沒準你心里一下就亮堂了,事半功倍,何樂而不為?其二,我這段時間狀態不是很好,感冒發燒頭疼鼻塞,但主要還是感情上精神摧殘,搞的人煩透了,借寫教程之際感慨幾句,大家就全當買狗皮膏藥了,完全可以省略不看(也許還真有點效果----不至于讓你看著看著就睡著了,把頭磕了來找我報銷醫藥費)。說不定下次的教程中大家還會看到楊過、張無忌等金老前輩筆下的英雄們。?
看過第一章的朋友,一定對批處理有了初步的印象,知道它到底是用來干什么的了。但你知道運用批處理的精髓在哪里嗎?其實很簡單:思路要靈活!沒有做不到的,只有想不到的。這和愛情就有點不同了,因為愛情的世界是兩個人的世界,一廂情愿不叫愛情(補充:那叫單戀。廢話!)而批處理卻是一個人的天堂,你可以為所欲為,沒有達不到的境界!
批處理看起來雜亂無章,但它的邏輯性之強,絕對不比其他程序語言(如匯編)低,如果你寫的腳本是一堆亂麻,雖然每一行命令都正確,但從頭執行到尾后,不一定得到你想要的結果,也許是一屏幕的Bad command or fail name。這又和愛情有了共同點:按步驟來經營,缺少或增多的步驟都可能導致不想看見的結果。陷入愛河的朋友,相信沒有不肯定這句話的。我的愛情批處理,輸出的結果不是Bad command or fail name,屏幕是這么顯示的:‘你的愛情’不是內部或外部命令,也不是可運行的程序或批處理文件。然后就是光標不停閃動,等待這下一次錯誤的輸入。
從這一章開始,將由淺入深的介紹批處理中常用的命令,很多常見DOS命令在批處理腳本中有這廣泛的應用,它們是批處理腳本的BODY部分,但批處理比DOS更靈活多樣,更具備自動化。要學好批處理,DOS一定要有比較扎實的基礎。這里只講述一些比較少用(相對來說)的DOS命令,常用命令如COPY、DIR等就不做介紹了(這些看似簡單的命令實際復雜的很,我怕自己都說不清楚!)。

回復
  • 2樓
  • 2010-06-22 00:57
  • 舉報?|個人企業舉報垃圾信息舉報
  • zhouyucheng313
  • 新兵 1
例五,先看一個實例。這是一個很有意思的腳本,一個小巧實用的好東東,把批處理“自動化”的特點體現的淋漓盡致。先介紹一下這個腳本的來歷:大家都知道匯編程序(MASM)的上機過程,先要對源代碼進行匯編、連接,然后再執行,而這中間有很多環節需要輸入很多東西,麻煩的很(只有經歷過的朋友才懂得)。如何使這個過程變的簡單呢?在我們搞匯編課程設計時,我“被逼”寫了這個腳本,用起來很爽,呵呵。看看腳本內容:
@echo off?
::close echo
cls
::clean screen?
echo This programme is to make the MASM programme automate?
::display info
echo Edit by CODERED?
::display info
echo Mailto me : qqkiller***@sina.com?
::display info
if "%1"=="" goto usage?
::if input without paramater goto usage
if "%1"=="/?" goto usage?
::if paramater is "/?" goto usage
if "%1"=="help" goto usage?
::if paramater is "help" goto usage?
pause?
::pause to see usage
masm %1.asm?
::assemble the .asm code
if errorlevel 1 pause & edit %1.asm?
::if error pause to see error msg and edit the code
link %1.obj & %1?
::else link the .obj file and execute the .exe file
:usage?
::set usage
echo Usage: This BAT file name [asm file name]?
echo Default BAT file name is START.BAT?
::display usage
先不要被這一堆的東西給嚇怕了,靜下心來仔細的看(回想一下第一章中第一段是怎么寫的!!)。已經給出了每一行命令的解釋,兩個冒號后面的內容為前一行內容解釋的E文(害怕E文的朋友也不用擔心,都很easy,一看就懂了,實在不懂了不會查詞典啊,這么懶?),在腳本執行時不顯示,也不起任何作用。倒數第5行行首有一個冒號,可不是筆誤哦!具體作用后面會詳細講到。此腳本中masm和link是匯編程序和連接程序,必須和edit程序以及你要編輯的源代碼(當然還有這個腳本,廢話!)一起在當前目錄中。使用這個批處理腳本,可以最大可能的減少手工輸入,整個過程中只需要按幾下回車鍵,即可實現從匯編源代碼到可執行exe文件的自動化轉換,并具備智能判斷功能:如果匯編時源代碼出現錯誤(匯編不成功),則自動暫停顯示錯誤信息,并在按任意鍵后自動進入編輯源代碼界面;如果源代碼匯編成功,則進行連接,并在連接后自動執行生成的exe文件。另外,由于批處理命令的簡單性和靈活性,這個腳本還具備良好的可改進性,簡單進行修改就可以符合不同朋友的上機習慣。正在學匯編的朋友,一定別忘了實習一下!
在這個腳本中出現了如下幾個命令:@、echo、::、pause、:和goto、%以及if。而這一章就將講述這幾個命令。?
1、@
這個符號大家都不陌生,email的必備符號,它怎么會跑到批處理中呢?呵呵,不是它的錯,批處理本來就離不開它,要不就不完美了。它的作用是讓執行窗口中不顯示它后面這一行的命令本身(多么繞口的一句話!)。呵呵,通俗一點說,行首有了它的話,這一行的命令就不顯示了。在例五中,首行的@echo off中,@的作用就是讓腳本在執行時不顯示后面的echo off部分。這下懂了吧?還是不太懂?沒關系,看完echo命令簡介,自然就懂了。
2、echo?
中文為“反饋”、“回顯”的意思。它其實是一個開關命令,就是說它只有兩種狀態:打開和關閉。于是就有了echo on和echo off兩個命令了。直接執行echo命令將顯示當前echo命令狀態(off或on)執行echo off將關閉回顯,它后面的所有命令都不顯示命令本身,只顯示執行后的結果,除非執行echo on命令。在例五中,首行的@命令和echo off命令聯合起來,達到了兩個目的:不顯示echo off命令本身,不顯示以后各行中的命令本身。的確是有點亂,但你要是練習一下的話,3分鐘包會,不會的退錢!

回復
  • 3樓
  • 2010-06-22 00:57
  • 舉報?|個人企業舉報垃圾信息舉報
  • zhouyucheng313
  • 新兵 1
煩!就好象一個半老女人到了更年期,什么事都想嘮叨幾句,什么事都感到不舒服,看誰誰不爽。明知山有虎,偏向虎山行,最后留下一身傷痕無功而返時,才發現自己竟然如此脆弱,如此渺小,如此不堪一擊。徘徊在崩潰的邊緣,突然回想起了自己最后一次扁人的那一刻,還真有點懷念(其實我很不喜歡扁人,更不喜歡被人扁)。我需要發泄,我用手指拼命的敲打著鍵盤,在一陣接一陣有節奏的聲音中,屏幕上出現了上面的這些文字。可難道這就是發泄的另一種方式嗎?中國人還是厲害,早在幾千年前孔老夫子就說過“唯女子與小人,難養也”,真**有先見之明,佩服!雖然是在發泄,不過大家請放心,以我的脾氣,既然決定寫這篇教程,就一定會盡力去寫好,寫完美,絕對不給自己留下遺憾,要不這教程就不是我寫的!?
曾經有一篇經典的批處理教程出現在你的屏幕上,你沒有保存,直到找不到它的鏈接你才后悔莫及,人世間最大的痛苦莫過于此。如果上天能給你一個再看一次的機會,你會對那篇教程說三個字:我愛你!如果非要給這份愛加上一個期限,你希望是100年。因為100年后,你恐怕早已經掛了!而現在,你的屏幕上出現了這篇你正在看的批處理教程,雖然不如你曾經看的那篇經典,但如果勉強還過的去。你會愛它嗎?時間會有50年那么長嗎?答案是:試試看吧。?
批處理腳本中最重要的幾個命令,將在這一章詳細介紹,但是很遺憾,有些細節到現在我都沒掌握的很好,甚至還有些生分。如同還不太懂得愛一樣。但我一直都在努力,即使一直都沒有收獲。所以可能講的會比較籠統,但我會告訴你方法,剩下的就是時間問題了,需要自己去磨練。讓我們共同努力吧。冰凍三尺非一日之寒,滴水穿石非一日之功。有些事情,比如學批處理,比如愛一個人,都是不能速成的,甚至還會有付出艱辛而收獲為甚微的情況。再次重申,看這篇教程的時候,一定要靜下心來,除非你已經掌握了這篇教程的所有東西----但那也就不必看了,浪費時間!?
7、if?
接上一章,接著講if命令。總的來說,if命令是一個表示判斷的命令,根據得出的每一個結果,它都可以對應一個相應的操作。關于它的三種用法,在這里分開講。?
(1)、輸入判斷。還是用例五里面的那幾句吧:?
if "%1"=="" goto usage?
if "%1"=="/?" goto usage?
if "%1"=="help" goto usage?
這里判斷輸入的參數情況,如果參數為空(無參數),則跳轉到usage;如果參數為/?或help時(大家一般看一個命令的幫助,是不是輸入的/?或help呢,這里這么做只是為了讓這個腳本看起來更像一個真正的程序),也跳轉到usage。這里還可以用否定形式來表示“不等于”,例如:if not "%1"=="" goto usage,則表示如果輸入參數不為空就跳轉到usage(實際中這樣做就沒意義了,這里介紹用法,管不了那么多了,呵呵。)是不是很簡單?其實翻譯成中文體會一下就understand了。?
(2)、存在判斷。再看例二里這句:?
if exist C:\Progra~1\Tencent\AD\*.gif del C:\Progra~1\Tencent\AD\*.gif?
如果存在那些gif文件,就刪除這些文件。當然還有例四,都是一樣的道理。注意,這里的條件判斷是判斷存在的,當然也可以判斷不存在的,例如下面這句“如果不存在那些gif文件則退出腳本”:if not exist C:\Progra~1\Tencent\AD\*.gif exit。只是多一個not來表示否定而已。?
(3)、結果判斷。還是拿例五開刀(沒想到自己寫的腳本,竟然用處這么大,呵呵):?
masm %1.asm?
if errorlevel 1 pause & edit %1.asm?
link %1.obj?
先對源代碼進行匯編,如果失敗則暫停顯示錯誤信息,并在按任意鍵后自動進入編輯界面;否則用link程序連接生成的obj文件。這里只介紹一下和if命令有關的地方,&命令后面會講到。這種用法是先判斷前一個命令執行后的返回碼(也叫錯誤碼,DOS程序在運行完后都有返回碼),如果和定義的錯誤碼符合(這里定義的錯誤碼為1),則執行相應的操作(這里相應的操作為pause & edit %1.asm部分)。?

  • zhouyucheng313
  • 新兵 1
另外,和其他兩種用法一樣,這種用法也可以表示否定。用否定的形式仍表達上面三句的意思,代碼變為:?
masm %1.asm?
if not errorlevel 1 link %1.obj?
pause & edit %1.asm?
看到本質了吧?其實只是把結果判斷后所執行的命令互換了一下,“if not errorlevel 1”和“if errorlevel 0”的效果是等效的,都表示上一句masm命令執行成功(因為它是錯誤判斷,而且返回碼為0,0就表示否定,就是說這個錯誤不存在,就是說masm執行成功)。這里是否加not,錯誤碼到底用0還是1,是值得考慮的兩個問題,一旦搭配不成功腳本就肯定出錯,所以一定要體會的很深刻才行。如何體會的深刻?練習!自己寫一個腳本,然后把有not和沒有not的情況,返回碼為0或1的情況分別寫進去執行(怎么,嫌麻煩啊?排列組合算一下才四中情況你就嫌麻煩了?后面介紹管道命令和組合命令時還有更麻煩的呢!怕了?呵呵。),這樣從執行的結果中就能很清楚的看出這兩種情況的區別。?
這種用errorlevel結果判斷的用法是if命令最難的用法,但也恰恰是最有用的用法,如果你不會用errorlevel來判斷返回碼,則要達到相同的效果,必須用else來表示“否則”的操作,是比較麻煩的。以上代碼必須變成:?
masm %1.asm?
if exist %1.obj link %1.obj?
else pause & edit %1.asm?
關于if命令的這三種用法就say到這里,理解很簡單,但應用時就不一定用的那么得心應手,主要是熟練程度的問題。可能有的朋友有點驚訝,我怎么沒給出類似下面三行的用法介紹,是因為下面三行是if命令幫助里對它自身用法的解釋,任何人只要一個“if /?”就能看到,我沒有必要在這里多費口舌;更重要的原因,是我覺得這樣介紹的不清楚,看的人不一定看的懂,所以我采用上面自己對if命令的理解來介紹。一定要注意的是,這三種用法的格式各不相同,而且也是不能改變的,但實際上可以互換(以為從本質上講,這三種用法都是建立在判斷的基礎上的,哲學教我們學會透過現象看事物本質!)。有興趣的朋友可以自己研究一下。?
IF [NOT] ERRORLEVEL number do command?
IF [NOT] string1==string2 do command?
IF [NOT] EXIST filename do command?
8、call?
學過匯編或C的朋友,肯定都知道call指令表示什么意思了,在這里它的意思其實也是一樣的。在批處理腳本中,call命令用來從一個批處理腳本中調用另一個批處理腳本。看例八(默認的三個腳本文件名分別為start.bat、10.bat和ipc.bat):?
start.bat:?
……?
CALL 10.BAT 0?
……?
10.bat:?
……?
ECHO %IPA%.%1 >HFIND.TMP?
……?
CALL ipc.bat IPCFind.txt?
ipc.bat:?
for /f "tokens=1,2,3 delims= " %%i in (%1) do call HACK.bat %%i %%j %%k?
有沒有看出什么不對的地方?沒看出來啊?沒看出來就對了,其實就沒有不對的地方嘛,你怎么看的出來!從上面兩個腳本,你可以得到如下信息:1、腳本調用可以靈活運用,循環運用、重復運用。2、腳本調用可以使用參數!關于第一點就不多說了,聰明的你一看就應該會,這里說一下第二點。?
在start.bat中,10.bat后面跟了參數0,在執行時的效果,其實就是把10.bat里的參數%1用0代替。在start.bat中,ipc.bat后面跟了參數ipcfind.txt(一個文件,也可以做參數),執行時的效果,就是用ipc.bat中的每一行的三個變量(這里不懂沒關系,學過for命令后就懂了),對應代換ipc.bat中的%%i、%%j和%%k。這里參數調用是非常靈活的,使用時需要好好體會。在初學期間,可以先學習只調用腳本,至于連腳本的參數一起使用的情況,在后面的學習中自然就會有比較深刻的理解,這是因為當你已經可以靈活運用批處理腳本后,如何使代碼寫的更精簡更完美更高效就自然包括到了考慮的范圍,這時候你就會發現在調用腳本時直接加入參數,可以使代碼效率加倍。By the way,上面的這幾個腳本,都是Bat.Worm.Muma病毒的一部分,在后面的教程里,大家將有機會見到這個病毒的真面目。?

  • zhouyucheng313
  • 新兵 1
那是不是說,在同一個目錄下至少存在兩個批處理腳本文件(只有一個你調用誰?)?呵呵,注意了,這句話錯了!!只有一個照樣可以調用----調用自身!看例九(默認腳本文件名a.bat):?
net send %1 This is a call example.?
call a.bat?
這兩句一結合,效果自然不怎么樣,因為只有一臺機器來發消息,誰怕誰啊?我給你來個禮尚往來!可如果有100臺機器同時執行,而且每臺機器開10和窗口同時向一個目標機器發消息的話,呵呵。這里call a.bat的作用就是調用自身,執行完前一句net send命令后再調用自身,達到了循環執行的目的。?
給出一個很有意思的腳本,有興趣的朋友可以實驗一下。例十(默認腳本文件名為a.bat):?
call a.bat?
一定要在DOS窗口下執行,否則只會看到一個窗口一閃而過,看不到最后結果。等執行完后,當腳本被執行了1260次,別忘了想一下到底是為什么!愛情有時候跟這個腳本一樣,一旦陷入死循環,最后的結果都是意想不到的。只是愛情,絕對不會等到被毫無理由的循環這么多次,也許在第三次時就出現了love is aborted的提示。?
9、find?
這是一個搜索命令,用來在文件中搜索特定字符串,通常也作為條件判斷的鋪墊程序(我怎么突然想起了這四個字?)。這個命令單獨使用的情況在批處理中是比較少見的,因為沒什么實際意義。還是借例三來說明:?
@echo off?
netstat -a -n > a.txt?
type a.txt | find "7626" && echo "Congratulations! You have infected GLACIER!"?
del a.txt?
pause & exit?
先用netstat命令檢查是否有冰河默認的端口7626在活動,并把結果保存到a.txt中。然后使用type命令列出a.txt中的內容,再在列出的內容中搜索字符串“7626” ,發現有的話則提示中了冰河,否則退出。看,find命令其實就這么簡單,但有一點必須要注意到:如果不使用type命令列出a.txt中的內容,而是直接使用find命令在a.txt中找“7626”(find a.txt "7626" && echo "Congratulations! You have infected GLACIER!"),就必須得給出這個a.txt的絕對路徑(我試過了,find并沒有默認路徑就是當前路徑的功能,必須手動指定。也許是我錯了,歡迎指正)。因為在find命令的幫助里有這么一句話:如果沒有指定路徑,find將搜索鍵入的或者由另一個命令產生的文字。這里的“另一個命令”自然就指的type命令了。?
至于find命令的其他幾個參數如v、n、i等,有興趣的朋友自己去研究吧,這已經屬于DOS學習的內容了,這里就不做介紹。關于find命令和其他命令的一些更精妙的用法(有些簡直令人叫絕),后續的教程中將介紹,希望關注。?
10、for、set、shift?
為什么把這三個命令放到一起來講?原因除了我說明外,恐怕誰也想不到!很簡單的一句話:其實我也不太懂!是的,對于這兩個命令,我是從研究Bat.Worm.Muma病毒開始學習的,時間過去了不少,但還是沒完全搞明白,我怕講出來連自己都看不懂,我更怕不小心講錯了成了罪人。所以我給出一個腳本去告訴你,如何讓這兩個命令給自己留一個初步的印象,其實也就是這兩個命令的入門,而并不是說如何領會這兩個命令。因為要領會如此精妙的兩個命令(特別是for)談何容易!也許你會表揚我說我誠實、不懂就不懂;也許你會罵我,讓我既然不懂就趕緊滾蛋,不要在這里丟人顯眼;也許你還會說一些別的這樣那樣好聽或不好聽的話,都隨便你了,即使我不同意你說的話,我也會誓死捍衛你說話的權利。看例十一:?
@echo off?
for /? > for.txt?
set /? > set.txt?
shift /? >shift.txt?
exit?
執行后在當前路徑下就生成for.txt、set.txt和shift.txt三個文件,里面分別記錄了for命令、set命令和shift命令的幫助信息。地球人都能看懂,我就不多說了。我在網上曾經找了很長時間這三個命令的教程,但都不理想,基本都是照搬的幫助信息。我想在自己完全掌握了這兩個命令后,一定要寫一篇用自己的文字總結出來的for、set和shift教程(關于shift命令,后面介紹批處理的參數時還將涉及到),一定會的,這是我的心愿之一!需要注意的一點是,這三個命令的幫助里 ,介紹的都比較死板,雖然也舉了一些例子,但這是遠遠不夠的。要掌握這兩個命令,最需要的就是耐心!沒寫錯,就是耐心。光是認真看完它們的幫助文字就已經需要足夠的耐心了,要進一步練習領會這兩個命令,難道不需要更大的耐心?實戰練習的機會我會留給你的,關鍵還是那句話,看你有沒有耐心去研究了。看看例十二:?

  • zhouyucheng313
  • 新兵 1
START.BAT:?
CALL MUMA.BAT?
SET IPA=192.168?
CALL 10.BAT 0?
:NEARAGAIN?
netstat -n|find ":" >A.TMP?
FOR /F "tokens=7,8,9,10,12 delims=.: " %%I IN (A.TMP) DO SET NUM1=%%I&& SET NUM2=%%J&& SET NUM3=%%K&& SET NUM4=%%L&& SET NUM5=%%M&& CALL NEAR.BAT?
:START?
CALL RANDOM.BAT?
IF "%NUM1%"=="255" GOTO NEARAGAIN?
IF "%NUM1%"=="192" GOTO NEARAGAIN?
IF "%NUM1%"=="127" GOTO NEARAGAIN?
IF "%NUM2%"=="255" GOTO NEARAGAIN?
IF "%NUM3%"=="255" GOTO NEARAGAIN?
IF "%NUM4%"=="255" GOTO NEARAGAIN?
SET IPA=%NUM1%.%NUM2%?
ECHO START > A.LOG?
PING %IPA%.%NUM3%.1>B.TMP?
PING %IPA%.%NUM3%.%NUM4%>>B.TMP?
FIND /C /I "from" B.TMP?
IF ERRORLEVEL 1 GOTO START?
CALL 10.BAT %NUM3%?
DEL A.LOG?
GOTO START?
這是Bat.Worm.Muma病毒的起始腳本,設置了病毒運行的環境變量。是不是看的頭都大了?又忘了寫在第一章第一段的那句話(靜下心來!),你應該能體會到學習這兩個命令所需要的耐心了吧。就如同去愛一個人,你得學會寬容,打不得罵不得,用你寬大的胸懷去包容她的一切,即使你發現愛她的過程如看上面代碼的過程一樣讓你頭大,但你還是得愛下去----愛需要理由嗎?不需要嗎?需要嗎?不需要嗎……等到風平浪靜后,最直觀的收獲就是,你的耐心變的前所未有的充足,面對她的復雜和善變,你自己會處變不驚,以自己的方式去從容應付曾經應付不了的場面,即使到最后一身傷痕,也會感慨曾經的舉動有多么偉大。?
沒錯,這就是批處理的魅力,這就是愛的魅力。讓你受了傷還感謝傷你的人。這種感覺就好象在自己最喜歡的音樂聲中被人強奸,痛并快樂著。?
不得不再次重申一遍,各種DOS命令是批處理的BODY(我實在找不出一個更合適的詞來形容他們之間的關系),學好DOS命令是學好批處理的前提。其他DOS命令如copy、dir、del、type、path、break、start等內部命令,以及ping、net、cmd、at、sort、attrib、fc、find等外部命令,在批處理里的應用非常廣泛。這篇教程的作用,是教你認識批處理,以及如何利用DOS命令組合出來一個完美的批處理腳本,去讓它自動完成你想要它做的事情。而靈活自如的編輯一個批處理腳本是建立在熟練掌握DOS命令的基礎上的,這已經超出了本文的范疇,在此就不贅述了。?
不知不覺中第三章已經結束了。耳麥里傳來的依然是陳曉東的《比我幸福》,每隔4分32秒就自動重播。雖然我不并不很喜歡陳曉東,可這并不妨礙我喜歡音樂,喜歡這首描寫的如此讓人感慨的歌。請你一定要比我幸福/才不枉費我狼狽退出/再痛也不說苦/愛不用抱歉來彌補/至少我能成全你的追逐/請記得你要比我幸福/才值得我對自己殘酷/我默默的倒數/最后再把你看清楚/看你眼里的我好饃糊/慢慢被放逐。我如同一個因年老失色而拉不到客的老* ,絕望的徘徊在曾經輝煌的紅燈區,用一臉的木然瞟一眼來來去去的人群,默默的回憶自己并不光彩的過去,幻想自己將要面對的未來。直到看見那些幸福依偎在一起的情侶們,才突然間發現上帝的公平,和這種公平的殘忍。?
可以說,批處理腳本中最重要的幾個命令我都沒有給出如echo或if那樣比較詳細的介紹,原因我已經說了,因為我也是個菜,我也不太懂----但我正在學!你呢?今天又去了一趟圖書館,淘金一樣發現了一本叫《DOS批文件》的東東,藏在一個角落里落滿了灰,五本摞一起就跟磚頭一樣厚了。大概翻了一下,里面介紹了很多比較底層和基礎的東西,雖然從思路上講,已經有點time out了,很多東西已經基本沒有利用的價值(這就是信息時代的更新速度),但還是很值得看的。于是打算下午淘過來,放假回去了再好好研究一番,連同那幾個不熟悉的命令一起搞熟了,再續寫這篇教程。我始終堅信,沒有最好只有更好。

回復
  • 8樓
  • 2010-06-22 00:57
  • 舉報?|個人企業舉報垃圾信息舉報
  • zhouyucheng313
  • 新兵 1
但是很可惜,等到下午再去的時候,圖書館樓梯口已經立了一個牌子,上面寫著out of service----人家這學期的工作結束了。于是回到宿舍打算繼續寫第四章,正在這時又得到一個“振奮人心”的消息:期末考試有一科掛了,而且是全班第一----這一門整個班里就掛了我一個。郁悶的情緒剎那間涌上心頭,整個世界仿佛都變成黑的了。食堂和小賣部已經陸續關門,學校里的人越來越少,迎面過來的幾個同學也都一身行李,忙碌著準備回家過年,內心的孤寂和失落如同夏日里暴雨前的烏云,迅速而不可抗拒的占領了心里每一個角落。迎著一月的冷風我一個人在天橋上發呆,還能怎么樣,連期末考試都應付不了的失敗男人。
“課間休息”時間好象長了點,呵呵,上課了!從這一章開始,將詳細介紹批處理中常用的幾個組合命令和管道命令。這些命令雖然不是必須的,如同愛一個人時不一定非得每天去陪,但如果少了這個過程,事情就會變的復雜而不完美,所以我認為管道命令和組合命令是批處理的調味劑,幾乎是少不了的。
下面從管道命令講起。常用的管道命令有以下這些:|、>、>>
11、|
這個命令恐怕大家不是很陌生,經常操作DOS的朋友都應該知道,當我們查看一個命令的幫助時,如果幫助信息比較長,一屏幕顯示不完時DOS并不給我們時間讓我們看完一屏幕再翻到另一屏幕,而是直接顯示到幫助信息的最后。如在提示符下輸入help回車時,就會看到當前DOS版本所支持的所有非隱含命令,但你只能看到最后的那些命令,前面的早就一閃而過了,如何解決這個問題?看例十三:
help | more
回車后會發現顯示滿一屏幕后就自動暫停,等候繼續顯示其他信息。當按寫回車時,變成一個一個的出現;按下空格鍵時一屏幕一屏幕顯示,直到全部顯示完為止;按其他鍵自動停止返回DOS。
為什么會出現上述現象?答案很簡單,這里結合了管道命令|和DOS命令more來共同達到目的的。這里先簡單介紹一下help命令和more命令,對理解|命令的用法有很大幫助。
11.1、help命令。其實這個命令是不需要多說的,但在上述例子中help命令的用法比較特殊,直接在DOS提示符下輸入help命令,結果是讓DOS顯示其所支持的所有非隱含命令,而在其他地方用help命令,如輸入net help回車,則是顯示net命令的幫助信息。
11.2、more命令。可能很多朋友以前就沒有接觸過這個命令,這個命令在Linux下的用處非常廣泛,也是管道命令之一。大家可以找一篇比較長的文章(a.txt)在DOS提示符下輸入如下兩個命令去比較一下差別:more a.txt和type a.txt。利用more命令,可以達到逐屏或逐行顯示輸出的效果,而type命令只能一次把輸出顯示完,最后的結果就是只能看到末尾的部分。在例十三里,more命令的作用就是讓輸出的信息逐屏或逐行顯示。
看到這里,你是否已經能隱約感受到了|命令的作用了?沒錯,它的作用,就是把前一命令的輸出當后一命令的輸入來用的。在例十三里,前一命令的輸出,就是help命令執行后顯示的DOS所支持的所有非隱含命令,而這個結果剛好做了后一命令more的輸入。所以例十三和下面的例十四是等效的:
help > a.txt
more a.txt
del a.txt
這里利用另一管道命令>生成了一個a.txt文件作為中間環節,在用more命令查看a.txt文件后再刪除a.txt文件(例十三的所有操作是在內存中進行的,不生成文件)。可以看出,正確使用管道命令|可以帶來事半功倍的效果。
結合例十三和例十四,以及前面的例九再體會一遍:|命令的作用,就是讓前一命令的輸出當做后一命令的輸入。
12、>、>>
這兩個命令的效果從本質上來說都是一樣的,他們都是輸出重定向命令,說的通俗一點,就是把前面命令的輸出寫入到一個文件中。這兩個命令的唯一區別是,>會清除掉原有文件中的內容后把新的內容寫入原文件,而>>只會另起一行追加新的內容到原文件中,而不會改動其中的原有內容。例十五:

  • zhouyucheng313
  • 新兵 1
echo @echo off > a.bat?
echo echo This is a pipeline command example. >> a.bat
echo echo It is very easy? >> a.bat
echo echo Believe your self! >> a.bat
echo pause >> a.bat
echo exit >> a.bat
依次在DOS提示符下輸入以上各行命令,一行一個回車,將在當前目錄下生成一個a.bat文件,里面的內容如下:
@echo off?
echo This is a pipeline command example.
echo It is very easy?
echo Believe your self!
pause
exit
看到這里,你得到了多少信息?1、可以直接在DOS提示符下利用echo命令的寫入功能編輯一個文本,而不需要專門的文本編輯工具;2、管道命令>和>>的區別如上所述。如果這里只用>命令來完成上面操作,最后也會生成一個a.bat,但里面的內容就只剩下最后一行exit了。所以>和>>一般都聯合起來用,除非你重定向的輸出只有一行,那么就可以只用>了。結合例一再仔細體會輸出重定向管道命令>和>>的用法。
13、<、>&、<&
這三個命令也是管道命令,但它們一般不常用,你只需要知道一下就ok了,當然如果想仔細研究的話,可以自己查一下資料。
<,輸入重定向命令,從文件中讀入命令輸入,而不是從鍵盤中讀入。?
>&,將一個句柄的輸出寫入到另一個句柄的輸入中。?
<&,剛好和>&相反,從一個句柄讀取輸入并將其寫入到另一個句柄輸出中。
關于這三個管道命令的舉例,在后面批處理腳本的精妙應用中還將涉及到。
下面介紹組合命令:&、&&、||
組合命令,顧名思義,就是可以把多個命令組合起來當一個命令來執行。這在批處理腳本里是允許的,而且用的非常廣泛。它的格式很簡單----既然現在已經成了一個文件了,那么這多個命令就要用這些組合命令連接起來放在同一行----因為批處理認行不認命令數目。組合命令的作用,就如同給愛人陪不是,說一句是說,說十句也是說,不一次把好話都說了出來,效果可能會好些----當然得排除一種特殊情況:這些話是否有先后順序,有些話是否可以同時說。在批處理腳本里也一樣,有些時候某些命令是不能同時執行的,后面給你說。
剛剛又送走了一個同學,人去樓空的感覺越來越明顯,望著空蕩蕩的床鋪,平日里喧鬧的宿舍就只剩下我一個人了,整個世界只有那個平時令人非常討厭的老鼠這時候才顯得可愛起來----只有它會陪著我在這不敢開燈的漆黑夜里----一個連期末考試都應付不了的失敗男人。失敗!我感到快要呼吸不過來,這種失敗的壓力簡直令我窒息,簡直讓我的手接收不到大腦的信號,簡直讓這篇未完成的教程夭折。但我能怪誰?
忙碌了一學期要過年了卻掛了科,失敗;掛了科也倒罷了,竟然一個人拖全班的后退,失敗中的失敗;更失敗的,是在這最失落的時候,竟然找不到一個人可以傾訴;然而最失敗的,是突然發現自己竟然如此脆弱,如此耐不住寂寞。不過這倒也解開了心中疑惑很久的一個問題:為什么明知道那段情是一個旋渦卻還心甘情愿的往里面跳----這就是青春,風一樣的年齡,火一樣不安的心。不再愛了,我不要再一個人的時候苦苦等待;不再愛了,我不要在你給的囚籠里憐憫的愛;不再愛了,我不要在別人的視線里如此可笑;不再愛,我不再愛。就算塌下來,我也要一個人扛著,頭不能低腰不能彎,不能喘息不能傾訴,因為雖然失敗,但還是男人,是男人就不能向困難低頭!?
14、&
這可以說是最簡單的一個組合命令了,它的作用是用來連接n個DOS命令,并把這些命令按順序執行,而不管是否有命令執行失敗。例十六:
copy a.txt b.txt /y & del a.txt?
其實這句和move a.txt b.txt的效果是一樣的,只不過前者是分了兩步來進行的(在后面還將涉及到具體使用哪種方法的問題)。這個命令很簡單,就不多費口舌了,唯一需要注意的一點是,這里&兩邊的命令是有執行順序的,從前往后執行。 tasklist

一、概述

for命令開關有很多,/L,/F,/R。這里僅對含有/F的for進行分析,這個可能是最常用的,也是最強的命令,主要用來處理文件和一些命令的輸出結果。

1.命令格式:
(1).FOR /F ["options"] %%i IN (file) DO command
(2).FOR /F ["options"] %%i IN ("string") DO command–注意雙引號
(3).FOR /F ["options"] %%i IN ('command') DO command–注意單引號

?

?

?

2.參數說明:

file代表一個或多個文件,可以使用通配符。
string 代表字符串
command代表命令
["options"]選項有多個:

?eol=c???????????– 指定一個行注釋字符,遇到c開頭的行就忽略掉。
?skip=n??????????– 指定在文件開始時忽略的行數。
?delims=xxx??????– 指定分隔符。默認是空格和TAB

?

?tokens=x,y,m-n??– 指每行的哪一個符號被傳遞到每個迭代
???????????????????的 for 本身。這會導致額外變量名稱的分配。m-n
???????????????????格式為一個范圍。通過 nth 符號指定 mth。如果
???????????????????符號字符串中的最后一個字符星號,
???????????????????那么額外的變量將在最后一個符號解析之后
???????????????????分配并接受行的保留文本。
?usebackq????????–?1.把單引號字符串作為命令;2.允許中使用雙引號擴起文件名稱。

?

二、詳細介紹
1.FOR /F %%i IN (file) DO command
????file為文件名,按照官方的說法是,for會依次將file中的文件打開,并且在進行到下一個文件之前將每個文件讀取到內存,按照每一行為一個元素,忽略空白的行。
????假如文件d:\out.txt中有如下內容:

?

??第1行第1列第1行第2列第1行第3列
??第2行第1列第2行第2列第2行第3列
??第3行第1列第3行第2列第3行第3列

?

怎么遍歷文件中的內容呢?下面的語句可以:
for /f %%i in (d:\out.txt) do echo %%i


執行過程:for會先打開out.txt,然后讀出out.txt里面的所有內容,把它作為一個集合,并且以每一行(文件中無分隔符情況下)作為一個元素,用%%i依次代替每個元素,然后執行do后面的命令。

for /f會默認以每一行(無分隔符)來作為一個元素,但是有分隔符怎么辦?假如out.txt內容變成如下:

??第1行第1列 第1行第2列 第1行第3列
??第2行第1列 第2行第2列 第2行第3列
??第3行第1列 第3行第2列 第3行第3列

?

那么for /f %%i in (d:\out.txt) do echo %%i就無法將所有的內容顯示出來。顯示結果如下:

??第1行第1列
??第2行第1列
??第3行第1列

?

因為命令默認是以空格和TAB為分隔符,所以它遇到分割符之后,默認只取第一個,就將分割符后面的都丟掉了。

如果我們還想把每一行再分解更小的內容,該怎么辦呢?for命令提供了更多的參數,它們就是:delims和tokens
delims :告訴for每一行應該拿什么作為分隔符,默認的分隔符是空格和tab鍵
比如,我們執行下面的命令:

for /f "delims= " %%i in (d:\out.txt) do echo %%i

顯示的結果:

第1行第1列
第2行第1列
第3行第1列

這個命令和for /f %%i in (d:\out.txt) do echo %%i的效果是一樣的。

?

?

如果我們想要每一行的后面的元素,那又如何呢?這個時候就可以利用tokens參數,它的作用就是當你通過delims將每一行分為更小的元素時,由tokens來控制要取哪一個或哪幾個。
還是上面的例子,執行如下命令:

for /f "tokens=2 delims= " %%i in (d:\out.txt) do echo %%i

執行結果:

第1行第2列
第2行第2列
第3行第2列
如果要顯示第二列和第三列,則換成tokens=2,3或tokens=2-3,全部顯示則使用通配符tokens=*。

注意:如果顯示多個元素(非*),比如這里的tokens=2-3,語句應該寫成這樣:

for /f "tokens=2,3 delims= " %%i in (d:\out.txt) do echo %%i %%j

怎么多出一個%%j?
這是因為你的tokens后面要取每一行的兩列,用%%i來替換第二列,用%%j來替換第三列。
并且必須是按照英文字母順序排列的,%%j不能換成%%k,因為i后面是j。
執行結果為:

第1行第2列 第1行第3列
第2行第2列 第2行第3列
第3行第2列 第3行第3列

又如下面語句:

for /f "tokens=2,* delims= " %%i in (d:\out.txt) do echo %%i %%j
它顯示從第二列到最后的一列,執行結果為:

第1行第2列 第1行第3列
第2行第2列 第2行第3列
第3行第2列 第3行第3列

用%%i代替第二列,用%%j代替剩余的所有。

最后還有skip,eol和usebackq。

skip就是要忽略文件的前多少行,eol用來指定當一行以什么符號開始時,就忽略它。比如:

for /f "skip=2 tokens=*" %%i in (d:\out.txt) do echo %%i
結果為:

第3行第1列 第3行第2列 第3行第3列
用skip來告訴for跳過前兩行。

?

?

再如,當out.txt內容變成:

#第1行第1列 第1行第2列 第1行第3列
#第2行第1列 第2行第2列 第2行第3列
第3行第1列 第3行第2列 第3行第3列

for /f "eol=# tokens=*" %%i in (d:\out.txt) do echo %%i

結果是:

第3行第1列 第3行第2列 第3行第3列
用eol來告訴for忽略以“.”開頭的行。

?

?

usebackq就是反轉的意思,他把字符串("out.txt")當做文件,或者把命令('command')當做字符串。

例如:

for /f "usebackq eol=# tokens=*" %%i in ("d:\out.txt") do echo %%i

結果是:

第3行第1列 第3行第2列 第3行第3列

如果不加usebackq,則"d:\out.txt"會被當成字符串。

又例如:

for /f "usebackq tokens=*" %%i in ('echo helloworld!') do echo %%i

結果:

echo helloworld,這里命令被當成了字符串。

如果沒有usebackq

for /f "tokens=*" %%i in ('echo helloworld!') do echo %%i

結果:

helloworld!

2.FOR /F ["options"] %%i IN ("string") DO command

例子:

for /f "tokens=2,* delims= " %%i in ("this is an example!") do echo %%i %%j

結果:

is an example!

對于字符串的處理類似于文件的處理,此處不再贅述。

3.FOR /F ["options"] %%i IN ('command') DO command

?

?

?該命令將command的執行結果作為集合,后面的處理類似文件處理,此處不再贅述。

我們經常有大量的圖片或者文件名稱需要修改為我們需要的格式。使用手動一個個的修改是很笨的方法,這里我們可以編寫批處理文件來實現自動更改文件名。 1.只保留文件名中的一部分,其它部分刪除 例如:把 www.三國.01.rmvb? 修改為? 三國.01.rmvb (文件名中已包括其格式后綴名) 建立批處理文件a.bat: @echo off
setlocal enabledelayedexpansion
for /r %%s in (*.rmvb) do (
set a=%%~ns
ren "%%s" "!a:~4,5!.rmvb"
) 將以上代碼寫入a.bat中,bat文件可以在txt文件的基礎上修改其后綴名即可(將txt改為bat)。 然后將a.bat放入你說需要修改文件的同一目錄下。最后在dos界面下運行a.bat即可。 代碼解釋: 重命名:REN 格式:ren 舊文件名 新文件名 "!a:~4,5" 將a的值,保留從第4個字符開始的后面5個字符,"!"表示對變量或常量的引用 2.文件名需要重新命名 例如:

首先說說如何增加路徑:

path %path% e:\

DOS中SET命令的詳細用法

例子:

@echo off

set var=我是值

echo %var%

pause

請看 set var=我是值 ,這就是BAT直接在批處理中設置變量的方法!

set 是命令 var是變量名?? =號右邊的"我是值"是變量的值

在批處理中我們要引用這個變就把var變量名用兩個%(百分號)擴起來,如%var%

這種SET語法只能直接在BAT代碼的提前賦予變量的值,有時候我們需要提供一個交互界面, 讓

用戶自己輸入變量的值,然后我們在來根據這個值來做相應操作,現在我就來說說這SET的這

種語法,只需要加一個"/P"參數就可以了!

例子:

@echo off

set /p var=請輸入變量的值:

if %var% == 1 echo 您輸入了 1 ~_~

pause

set /p 是命令語法?? var是變量名 =號右邊的"請輸入變量的值: ",這個是提示語,不是變

量的值了!

運行后,我們在提示語后面直接輸入1,就會顯示一行您輸入了 1 ~_~ ,輸入別的就沒有任何反

映!

好了,先回顧到這,現在講SET其他功能

使用set /?查看SET的幫助我們發現SET除了我上面講的

SET [variable=[string]]

SET /P variable=[promptString]

這兩種語法外,還有如下幾種語法:

SET /A expression

環境變量替換已如下增強:

%PATH:str1=str2%

%PATH:~10,5%

%PATH:~-10%

%PATH:~0,-2%

這機種語法有什么用處呢?現在我們來一個個講解他們!

SET /A expression??

/A 命令行開關指定等號右邊的字符串為被評估的數字表達式。該表達式

評估器很簡單并以遞減的優先權順序支持下列操作:

() ?? ?? ?? ?? ?? - 分組

! ~ - ?? ?? ?? ?? - 一元運算符

* / % ?? ?? ?? ?? - 算數運算符

+ - ?? ?? ?? ?? ??? - 算數運算符

<< >> ?? ?? ?? ?? - 邏輯移位

& ?? ?? ?? ?? ?? - 按位“與”

^ ?? ?? ?? ?? ?? - 按位“異”

| ?? ?? ?? ?? ?? - 按位“或”

= *= /= %= += -= - 賦值

?? &= ^= |= <<= >>=

, ?? ?? ?? ?? ?? - 表達式分隔符

上面這些是系統幫助里的內容,看著是不是有點暈,沒關系我來簡單解釋一下:

set的/A參數就是讓SET可以支持數學符號進行加減等一些數學運算!

現在開始舉例子介紹這些數學符號的用法:

看例子 這里的例子請直接在CMD下拷貝命令運行,不需要保存為BAT!

set /a var=1 + 1??

set /a 語法, var變量名 1 + 1 數學式子

拷貝運行后會直接顯示一個2,或者運行完后我們輸入echo %var%,也是二,這就是

一個簡單的加法運算!

set /a var=2 - 1?? 結果是多少呢?如果你看不到結果就echo %var%.....

set /a var=2 * 2 乘法運算

set /a var=2 / 2 除法運算

set /a var=(1+1) + (1+1) 結果等于4 看得懂吧!

set /a a=1+1,b=2+1,c=3+1?? 運行后會顯示一個4,但我們用

echo %a% %b% %c%后看結果,會發現其他數學運算也有效果!,這就是"斗"號的

作用!

有時候我們需要直接在原變量進行加減操作就可以用這種語法

set /a var+=1?? 這樣的語法對應原始語法就是set /a var = %var% + 1

都是一樣的結果,在原變量的值上在進行數學運算,不過這樣寫簡單一點

在來一個:??

set /a var*=2

其他都這么用,只要幫助里有這個語法!

另外還有一些用邏輯或取余操作符,這些符號,按照上面的使用方法會報錯的

比如我們在CMD里輸入set /a var=1 & 1 "與運算",他并不會顯示為1,而是報錯,

為什么?對于這樣的"邏輯或取余操作符",我們需要把他們用雙引號引起來,看例子

set /a var= 1 "&" 1 這樣結果就顯示出來了,其他邏輯或取余操作符用法

set /a var= 1 "+" 1 異運算

set /a var= 1 "%" 1?? 取模運算

set /a var= 2 "<<" 2 次方運算

set /a var= 4 ">>" 2 這個不太記得數學里的叫法....

還有幾個數學不太行,搞不清楚了....不列出來了,

這些符號也可以用&= ^= |= <<= >>= 這樣的簡單用法如

set /a var"&=" 1 等于set /a var = %var% "&" 1 注意引號

好符號說到這,現在說%PATH:str1=str2%

這個是替換變量值的內容,看例子

@echo off

set a= bbs.verybat.cn

echo 替換前的值: "%a%"

set var=%a: =%

echo 替換后的值: "%var%"

pause

對比一下,我們發現他把變量%a%的空格給替換掉了,從這個例子,我們就可以發現

%PATH:str1=str2%這個操作就是把變量%PATH%的里的str1全部用 str2替換

比如我們把上面的例子改成這樣

@echo off

set a=bbs.verybat.cn

echo 替換前的值: "%a%"

set var=%a:.=傷腦筋%

echo 替換后的值: "%var%"

pause

解釋set var=%a:.=傷腦筋%

set命令 var變量名 字a是要進行字符替換的變量的值,"."為要替換的值,

"傷腦筋"為替換后的值!

執行后就會把變量%a%里面的"."全部替換為"傷腦筋"

這就是set的替換字符的很好的功能!先講到這

%PATH:~10,5%?? 這個什么意思,看例子:

@echo off

set a=bbs.verybat.cn

set var=%a:~1,2%

echo %var%

pause

執行后,我們會發現只顯示了"bs"兩個字母,我們的變量%a%的值不是為 bbs.verybat.cn嗎

怎么只顯示了第2個字母和第3個字母"bs",分析一結果我們就可以很容易看出

%PATH:~10,5%就是顯示變量PATH里指定幾位的值!

分析set var=%a:~1,2%

?? set命令 var變量值?? a要進行字符操作的變量 "1"從變量"a"第幾位開始顯示 "2"顯示幾位

和起來就是把變量a的值從第一位開始,把后兩位賦予給變量var

就樣因該明白了吧~

其他兩種語法

%PATH:~-10%

%PATH:~0,-2%

他們也是顯示指定變量指定幾位的值得的意思

%PATH:~-10% 例子

@echo off

set a=bbs.verybat.cn

set var=%a:~-3%

echo %var%

pause

這個就是把變量a倒數3位的值給變量VAR

當然我們也可以改成這樣

@echo off

set a=bbs.verybat.cn

set var=%a:~3%

echo %var%

pause

這個就是把變量a的前3位的值給變量VAR

%PATH:~0,-2%?? 例子

@echo off

set a=bbs.verybat.cn

set var=%a:~0,-3%

echo %var%

pause

執行后,我們發現顯示的是"bbs.verybat",少了".cn"

從結果分析,很容易分析出,這是把變量a的值從0位開始,

顯示變量a總位數-3的位的值得(我們給變量a的的值bbs.verybat有11 位,11-3=8),這樣他就

只顯示從第0位開始到第8位的值,并賦予給變量var

如果改成這樣

@echo off

set a=bbs.verybat.cn

set var=%a:~2,-3%

echo %var%

pause

那么他就是顯示從第2位開始到第8位的值,并賦予給變量var

延遲變量
http://www.cn-dos.net/forum/viewthread.php?tid=20733

willsort老大上面的帖子,對于新手來說比較難理解。不過沒關系,我們先分析一個例子,同樣是引用willsort老大的。本例啟用了變量延遲,是個正確的例子!
例1:
CODE:??[Copy to clipboard]
@echo off & setlocal EnableDelayedExpansion
for /f??"tokens=* delims=" %%i in ("Hello world.") do (
? ? set n=%%i
? ? set n=!n:ld.=t!
? ? set n=!n:o w= S!
? ? set n=!n:He=Wi!
? ? echo !n!
)
pause 將上面代碼保存為.bat雙擊執行后會顯示“Will Sort”字符串,下面將講解每個語句的意思:
1.@echo off & setlocal EnableDelayedExpansion
關閉命令回顯,并啟用變量延遲

2.for /f??"tokens=* delims=" %%i in ("Hello world.") do (
for命令及其參數的使用,請大家在論壇里搜索相關字眼。限于篇幅問題,這里不作討論。如果此時你不明白它的意思,那么你就當它的作用是把字符串“Hello world.”賦值給%%i好了,當然這只是權宜之計,以后一定要學習for的使用!

3.set n=%%i
把%%i的值(即Hello world.)賦予給變量n,這個大家都知道吧

4.set n=!n:ld.=t!
這里要講講set替換字符的功能了。這個語句的意思是,先獲取變量n的值(此時n的值是“Hello world.”),然后將字符“t”替換字符“ld.”,然后再將替換后的結果再次賦值給變量n(此時n的值變為“Hello wort”)。至于set替換字符的編寫格式,大家可以在CMD鍵入“set/?”找到“%PATH:str1=str2%”這段有說明

5.set n=!n:o w= S!
意思和上句一樣,只是替換和被替換的內容不同。它是將“ S”替換“o w”(注意S前面和w前面都有個空格),其實willsort老大是想證明set替換字符是支持句點和空格的(第4句“ld”后面有個.)。此時n的值為“Hell Sort”

6.set n=!n:He=Wi!
這句不用說了吧,執行完這句后n的值為“Will Sort”

7.echo !n!
顯示變量n的值

需要注意的是,一旦啟用了變量延遲,就要用!號把變量括起來,而不能用%號。

好了,每句的意思已經說完了,下面要講本帖真正要討論的變量延遲的問題。

這里又要引用Will Sort老大的說明:當CMD讀取for語句時,其后用一對圓括號閉合的所有語句將一同讀取,并完成必要的預處理工作,這其中就包括環境變量的擴展,所以在for中的所有語句執行之前,所有的環境變量都已經被替換為for之前所設定的值,從而成為一個字符串常量,而不再是變量。

而為了能夠在for語句內部感知環境變量的動態變化,CMD設計了延遲的環境變量擴展特性,也就是說,當CMD讀取了一條完整的語句之后,它不會立即執行變量的擴展行為,而會在某個單條語句執行之前再進行擴展,也就是說,這個擴展行為被“延遲”了。

總的來說是,在沒有啟用變量延遲的情況下,凡是在括號內(即do里面)的變量,在執行for語句之前,就已經被替換成for語句之前其它命令對該變量所賦予的值。這句話不懂沒關系,下面再看一個例子,看完你就會明白。
例2: CODE:??[Copy to clipboard]
@echo off
for /f??"tokens=* delims=" %%i in ("Hello world.") do (
set n=%%i
set n=%n:ld.=t%
set n=%n:o w= S%
? ? set n=%n:He=Wi%
? ? echo %n%?
)
pause 這和前面的例子差不多,只是所有!號都換成%號,這是個錯誤的例子。因為它沒有啟用變量延遲,也沒有使用!號把變量括起來。我們看到它的執行結果是顯示“ECHO 處于關閉狀態”。

為什么會這樣呢?原因是,在沒有啟用變量延遲的情況下,凡是在括號內(即do里面)的變量,在執行for語句之前,就已經被替換成for語句之前其它命令對該變量所賦予的值。
則是說在本例中的以下幾句
set n=%%i
set n=%n:ld.=t%
set n=%n:o w= S%
set n=%n:He=Wi%
echo %n%?
第一句能正常執行并達到它的目的,因為它只是單純地將%%i的值賦予給變量n,所以沒有任何問題。其它幾句屬這樣情況:早在for語句執行前,CMD就急不切待地將這幾句里面的所有變量n一同執行替換行為,替換為for之前,其它命令對n所設置的值,從而使n變成一個常量。但在本例中,for語句之前只有@echo off這句,并沒有其它命令對n作過任何賦值行為,所以在for之前,變量n的值為空值。即是說,set n=%n:ld.=t% 這句里面的變量n,在CMD讀取(注意是讀取不是執行)完整個for語句后(這時還未輪到set執行自己的任務),就立刻被替換為一個空值,一個空值里面沒有任何東西,所以就不存在一字符替換另一字符這種說法(沒有東西怎么替換?)。最終到執行set n=%n:ld.=t%語句時,它只是獲取一個空值,再給變量n賦予空值而已。其它幾句也是一樣原理。

所以,最后echo %n%的時候變量n還是個空值,而echo命令沒有東西可以顯示,就只有顯示“ECHO 處于關閉狀態”這句來說明自己的狀態

通過這個例子的說明,相信大家已經知道變量延遲的作用吧!我們再回頭來看看例1。
啟用變量延遲后,在執行
set n=!n:ld.=t!
set n=!n:o w= S!
set n=!n:He=Wi!
echo !n!
這些語句前,它們里面的變量n不會馬上被CMD替換(啟用延遲后,CMD變得有耐性啦^_^),而未被替換的話,那么n就還是變量,而不是常量。等到執行set n=!n:ld.=t!等這幾句時,變量n才被替換。這樣每個set命令都能感知變量n的任何變化,從而作出正確的替換行為。這就是變量延遲啦!

可跳過:

什么,說我講得不好?沒辦法啊,因為偶太菜啊,只知道這些。偶只是淘兩頓飯吃而已,望大家諒解啊,不要再拿磚頭砸偶。。。不然偶就~~~~~~~~~~叫救命!^_^

這是正文不可跳過:

不要以為只有for才要用變量延遲,下面這個例子同樣需要
例3:這是個錯誤的例子 CODE:??[Copy to clipboard]
@echo off
set mm=girl&echo %mm%
pause 執行后依然顯示“ECHO 處于關閉狀態”。
原因是沒有啟用延遲,而且在set mm=girl&echo %mm%語句前沒有其它命令對mm進行賦值。這時當CMD執行set mm=girl&echo %mm%語句前,就已經急不切待地把變量mm的值替換了,而又因為前面沒給mm賦值,所以mm被替換為空值,變成常量。等到echo命令執行時,它其實是echo一個不會變化的常量,本例中即是空值。

有人會問,echo前面不是給mm賦值了嗎?
這個就要關系到CMD解釋命令的步驟,大家可以參詳本帖開頭willsort的帖子。
總的來說是,如果不啟用變量延遲,在本例中,echo是不會理會也不會知道,它前面(指同一行語句)是否有其它命令給mm賦值。它只會從set mm=girl&echo %mm%這句以上的語句中獲取它所要顯示的變量的內容,也就是說,上一行或上幾行的命令將mm設置成什么值,echo命令就顯示什么值。
大家這樣做就明白了: CODE:??[Copy to clipboard]
@echo off
set mm=boy
set mm=girl&echo %mm%
pause 看看顯示什么結果就知道了!

這樣編寫例3才正確: CODE:??[Copy to clipboard]
@echo off&setlocal EnableDelayedExpansion
set mm=girl&echo !mm!
pause 開啟了變量延遲,變量擴展(替換)的行為就推遲到echo命令執行時,這時echo能感知它前面的命令(本例的set)對變量mm做了什么“壞事”,從而作出正確的判斷并執行

好了全篇完了,下課!

轉載于:https://www.cnblogs.com/Frank99/p/5951183.html

總結

以上是生活随笔為你收集整理的转自网络的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

美女黄网久久 | 九草在线视频 | 在线观看日韩精品视频 | 成人综合婷婷国产精品久久免费 | av网站大全免费 | 精品xxx| 国产99久久精品一区二区300 | 国产一级一片免费播放放 | 正在播放日韩 | 国模吧一区 | 最新国产精品久久精品 | 国产精品久久久久久久久久久免费看 | 亚洲精品免费看 | .国产精品成人自产拍在线观看6 | 久久曰视频 | 免费v片 | 欧美在线视频一区二区 | 成人国产精品av | 亚洲欧美日韩一区二区三区在线观看 | 久久一区91 | 欧美视屏一区二区 | 亚洲精品久久在线 | av高清影院 | 国产成人精品亚洲精品 | 毛片一级免费一级 | 超碰在97| 国产精品久久久久久久久搜平片 | 国产美女视频免费观看的网站 | 久久福利小视频 | 成年人天堂com | 日韩精品专区 | 欧美激情视频一区二区三区免费 | 午夜电影久久久 | 91中文字幕在线观看 | 最新精品国产 | 少妇bbbb | 亚洲激情影院 | 欧美一区二区三区四区夜夜大片 | 911av视频 | 丁香在线观看完整电影视频 | 久久久影院官网 | 岛国一区在线 | 久久国产经典视频 | 国产亚洲精品免费 | 探花视频在线观看免费 | 久久久久久久久久久福利 | 日韩毛片一区 | 午夜精品一区二区三区免费 | 日日夜夜网站 | 久久涩视频 | 狠狠狠色丁香综合久久天下网 | 国产成人三级一区二区在线观看一 | 久久人人爽爽 | 国产高清视频免费 | 成人免费看片98欧美 | 久草久草视频 | 91看毛片 | 免费日韩| 色婷婷亚洲精品 | 香蕉视频久久久 | 在线日本看片免费人成视久网 | 日日操天天操夜夜操 | 亚洲精品tv久久久久久久久久 | 国产亚洲欧美一区 | 国产精品美女久久久久久久久久久 | 国产一区二区视频在线 | 国产福利免费看 | 日本免费久久高清视频 | 亚洲激情网站免费观看 | 黄色av网站在线观看免费 | 国产呻吟在线 | 91自拍成人 | 国产亚洲免费观看 | 18久久久久久 | 国产福利免费看 | 日韩电影在线看 | 99精品欧美一区二区三区黑人哦 | 久久96国产精品久久99软件 | 国产精品理论在线观看 | 亚洲国产精品人久久电影 | 九九一级片 | 久久综合五月婷婷 | 视频在线观看亚洲 | 国产亚洲视频系列 | 久久久久国产精品免费网站 | 99精品国产一区二区三区不卡 | 精品国产伦一区二区三区观看说明 | 国产在线91精品 | 五月天视频网 | 成人免费在线观看电影 | www色婷婷com| 亚洲第一av在线 | 99久久精品免费一区 | 丁香网五月天 | 91精品视屏 | av黄色成人 | 91香蕉视频色版 | 久久精品一区二区三区国产主播 | 日本九九视频 | 天天色官网 | 久久久久国产成人免费精品免费 | 96av在线视频 | 91中文字幕一区 | 日产中文字幕 | 在线观看视频免费播放 | 亚洲精品久久久久www | 色94色欧美 | 在线免费观看黄色 | 国产在线视频不卡 | 夜夜夜精品 | 婷婷综合五月天 | 欧美精品久久久久久久 | 黄色h在线观看 | 在线观看av大片 | 高清av在线免费观看 | 亚洲人成影院在线 | 最近高清中文字幕在线国语5 | 久久这里只精品 | 亚洲成人av电影 | 亚洲一二三在线 | 久久视精品 | 日本三级久久 | 91精品入口 | 五月天激情视频在线观看 | 亚洲电影图片小说 | 国产成人精品一区在线 | 亚洲男模gay裸体gay | 日韩在线观看视频一区二区三区 | 国产视频999| 亚洲日韩欧美一区二区在线 | 成人免费观看在线视频 | 97夜夜澡人人爽人人免费 | freejavvideo日本免费 | 国产成人精品综合久久久 | 国产高清视频色在线www | 91在线看黄 | 精品一区精品二区高清 | 欧美一级欧美一级 | 亚洲精品欧美专区 | 国产成人黄色 | 五月天天在线 | 国产成人久久精品一区二区三区 | 婷婷丁香九月 | 人人干97| 99久国产 | 激情伊人五月天久久综合 | 欧美性春潮 | 亚洲国产免费av | 欧美视频不卡 | 免费看色的网站 | 亚洲欧洲国产精品 | 国产伦精品一区二区三区在线 | 亚洲 av网站 | 亚洲jizzjizz日本少妇 | av在线影视| 亚洲精品456在线播放乱码 | 24小时日本在线www免费的 | avlulu久久精品 | 国产亚洲精品女人久久久久久 | 亚洲精品国产片 | 日韩免费在线观看视频 | 亚洲日本va中文字幕 | 在线观看91网站 | 亚洲精品黄色在线观看 | 欧美激情第十页 | 国产三级久久久 | 精品美女久久久久久免费 | 国产精品尤物视频 | 91免费观看视频网站 | 日韩免费高清在线 | 97视频在线播放 | 日韩免费看 | 久久国产电影 | 日韩在线国产精品 | 国产精品 日韩 | 日韩精品在线看 | 国产精品久久久久久久久免费看 | 有码一区二区三区 | 国产一区高清在线观看 | 日韩在线 一区二区 | 国产精品久久久久久模特 | 91夫妻视频 | 五月天丁香视频 | av电影在线播放 | av网址aaa| 91福利视频免费观看 | 国产精品18毛片一区二区 | 国产精品免费观看网站 | 国产精品一区二区三区在线看 | 在线国产精品视频 | 人人艹视频 | 久久久久久久久久国产精品 | 在线观看 国产 | 91精品1区| 午夜国产福利视频 | 97超视频| 三级免费黄色 | 国产亚洲91 | 日日操日日插 | 成年人视频在线 | 国产在线a免费观看 | 91精品系列 | 国产成人亚洲精品自产在线 | 久草在线免费资源站 | 欧洲亚洲精品 | 九九九在线观看 | 五月激情电影 | 中文字幕在线视频国产 | 伊人天天色 | 黄色软件在线观看视频 | 成年人国产精品 | 五月激情五月激情 | 日韩在线理论 | 在线观看黄a | 永久免费的av电影 | 欧美成人亚洲成人 | 亚洲免费小视频 | 国产精品久久久久久五月尺 | 久久乐九色婷婷综合色狠狠182 | 99久久精| 久草在线观看视频免费 | 99精品在线免费在线观看 | 在线观看视频你懂得 | 亚洲va男人天堂 | 久久免视频 | 521色香蕉网站在线观看 | 国产精品短视频 | 激情电影影院 | 波多野结衣电影久久 | 国产精品久久久久久妇 | 国产在线2020 | 色婷婷六月天 | 97在线免费 | 国产一区不卡在线 | av大片网站 | 成人sm另类专区 | 婷婷久久网站 | 久久久久久国产一区二区三区 | 久久婷婷丁香 | 狠狠操天天射 | 成人av片在线观看 | 在线色资源| 色婷婷久久久 | 一区二区精品国产 | 中文字幕在线观看网站 | 三级性生活视频 | 久久久久久毛片 | 亚洲日本韩国一区二区 | 欧美精品乱码久久久久 | 婷婷久久网 | 午夜在线观看一区 | 国产999视频在线观看 | 99精品热视频只有精品10 | www.天天射 | 99精品福利 | 激情视频一区二区三区 | 亚洲涩涩一区 | 天天色天天干天天 | 成人黄色毛片 | 国产精品 9999 | 天堂网av 在线 | 在线激情影院一区 | 很黄很污的视频网站 | 天天天天综合 | 欧美一级片在线免费观看 | 久久激情综合网 | 亚洲欧洲日韩 | 日韩视频免费观看高清 | 美女黄视频免费看 | 一级黄色免费网站 | 久久精品看片 | 成年人免费在线观看网站 | 亚洲成人免费在线观看 | 免费观看www7722午夜电影 | 91网在线观看 | 天天天天色射综合 | 在线观看黄网 | 香蕉视频免费在线播放 | 狠狠狠色丁香婷婷综合久久五月 | 久久综合五月天婷婷伊人 | 国产精品一区二区精品视频免费看 | 国产一二三精品 | 一区二区三区污 | 久久字幕精品一区 | 色综合久久88色综合天天人守婷 | 日日夜夜噜噜噜 | 高清av免费看 | 免费看色的网站 | 人人爽人人爽人人爽学生一级 | 国产高清久久久久 | 天天干天天干天天干 | 久久免费视频播放 | 日韩动态视频 | 九色最新网址 | 97国产精品一区二区 | 黄色av影视 | 日日干 天天干 | 九九久久久| 亚洲精品视频免费看 | 中文在线免费视频 | 公开超碰在线 | 亚洲黑丝少妇 | 久久久免费在线观看 | 亚洲黄色av网址 | 国产精品一码二码三码在线 | 91欧美精品| 亚洲国产剧情av | 91在线色 | 久久香蕉国产精品麻豆粉嫩av | 最近中文字幕第一页 | 欧美91av| 99re久久精品国产 | 国产精品一区二区三区在线看 | 少妇自拍av | 日韩欧美精品一区二区三区经典 | 久草色在线观看 | 色婷婷国产精品一区在线观看 | 91九色国产| 国产免费叼嘿网站免费 | 91精品久久久久久久久 | 久久久久免费电影 | 中文字幕亚洲欧美日韩2019 | 深爱开心激情网 | 久久久蜜桃 | 久草在线视频国产 | 婷婷丁香自拍 | 欧美一级欧美一级 | a视频在线播放 | 日韩在线观看精品 | 91成人午夜| 成年人黄色免费视频 | 欧美日韩国产亚洲乱码字幕 | 免费色av | 91手机电视 | 国产亚洲精品久久久网站好莱 | 欧洲色吧 | 日韩久久久久 | 天天夜操 | 香蕉久久久久久av成人 | 天堂中文在线视频 | 国产资源在线观看 | 手机在线日韩视频 | 中文字幕av日韩 | 欧美性色黄 | 五月天婷婷免费视频 | 国产精品午夜久久久久久99热 | 国产 精品 资源 | 欧美激情视频三区 | 欧美激情第一页xxx 午夜性福利 | 中文在线 | 九九久久国产精品 | 国产91粉嫩白浆在线观看 | 中午字幕在线观看 | 97免费公开视频 | 视频在线播放国产 | 丁香婷婷激情国产高清秒播 | 国产一卡在线 | 成人久久电影 | av成人免费在线 | 黄色亚洲| 中文字幕乱码亚洲精品一区 | 日韩mv欧美mv国产精品 | 9久久精品| 在线а√天堂中文官网 | 四虎国产精 | 欧美成人精品在线 | 99国产视频在线 | 国产欧美在线一区二区三区 | 亚洲一级二级 | 国产精品毛片久久久久久久 | 综合久色 | 成人理论电影 | 国产 日韩 在线 亚洲 字幕 中文 | 开心激情网五月天 | 色综合久久久久久久久五月 | 99这里有精品 | 日韩av网页 | 国产精品淫 | 伊人婷婷网 | 91久久精品一区二区二区 | 黄色影院在线免费观看 | 成人a毛片 | 91亚洲狠狠婷婷综合久久久 | 一区二区三区日韩在线观看 | 99精品毛片| 国产小视频精品 | 91丨九色丨高潮丰满 | 久久涩涩网站 | 六月激情| 国产成人精品av在线观 | 亚洲欧洲中文日韩久久av乱码 | 片网站| 在线免费观看国产黄色 | 亚洲视频在线视频 | 久久久久久毛片精品免费不卡 | 日日操日日 | 综合久久久久久久 | 99久久综合精品五月天 | 国产精品综合久久 | 久久久蜜桃一区二区 | 中文视频一区二区 | 久久理论视频 | 久青草视频在线观看 | 久久久久亚洲精品中文字幕 | 日韩高清av在线 | 国产黄色片一级 | 精品视频免费播放 | 精品电影一区二区 | 在线观看av麻豆 | 亚洲激情久久 | 亚洲激情小视频 | 99高清视频有精品视频 | 精品视频免费久久久看 | 91精品一区在线观看 | 蜜臀久久99精品久久久酒店新书 | 国产精品丝袜在线 | 国产麻豆精品久久 | 亚洲欧美国产日韩在线观看 | 美女视频黄免费 | 99久热在线精品视频观看 | 综合色亚洲 | 国产免码va在线观看免费 | 成 人 黄 色 片 在线播放 | 日韩欧美精品在线 | 国产中文字幕在线播放 | 97人人人人 | 808电影 | 日本韩国精品一区二区在线观看 | 91视频免费观看 | 日韩免费在线视频 | 午夜久久久精品 | 五月在线视频 | 亚洲欧洲日韩在线观看 | www.97视频 | 国产不卡免费av | av网站免费在线 | 国内精品在线一区 | 色综合久久网 | 少妇精品久久久一区二区免费 | 久久精品国亚洲 | 999久久久久 | 色婷婷丁香| 日韩精品中文字幕有码 | 国产高清视频免费在线观看 | 美国av片在线观看 | 蜜桃传媒一区二区 | 日韩欧美高清 | 国产伦精品一区二区三区高清 | 草久视频在线观看 | 亚洲婷婷综合色高清在线 | 国产精品一区二区62 | 亚洲美女免费精品视频在线观看 | 在线看污网站 | 久久a国产| 久久草精品 | 亚洲成av人影院 | 91人人干| 亚洲黄色免费在线 | 香蕉视频免费在线播放 | 国产黄 | 亚洲欧洲国产日韩精品 | 欧美日韩国产精品一区二区三区 | 成人免费一区二区三区在线观看 | 免费a视频在线 | 夜夜干天天操 | 成人性生交视频 | 高清中文字幕 | 涩av在线| 久久久久亚洲精品中文字幕 | 黄p网站在线观看 | 99久久精品免费看国产四区 | 天天色棕合合合合合合 | 国产一级精品绿帽视频 | 亚洲精品成人av在线 | 在线观看国产成人av片 | 国产清纯在线 | 亚洲精品国偷自产在线99热 | 黄色电影小说 | 日本中文字幕高清 | 五月开心六月伊人色婷婷 | 91天天操| 国产精品女同一区二区三区久久夜 | 免费a现在观看 | 亚洲成人欧美 | 日韩黄色av网站 | 久久精品人人做人人综合老师 | 久久久久久久久网站 | 日韩色爱 | 亚洲精品18p | 天天操天天摸天天射 | 一区二区三区av在线 | 性色xxxxhd | 国产精品久久久久久久久久久免费 | 精品爱爱 | 欧洲一区二区三区精品 | 成人亚洲综合 | 亚洲激色 | 午夜在线免费视频 | 免费91在线 | 人人干干人人 | 韩国av永久免费 | 日韩高清在线一区二区 | 国产韩国日本高清视频 | 国产一卡二卡四卡国 | 久久免费a | 国产伦理一区二区三区 | 国产精品不卡在线播放 | 日韩免费在线网站 | 青春草视频在线播放 | 69视频网站 | 在线国产精品一区 | 在线视频一区二区 | 成人久久久精品国产乱码一区二区 | 天天干,天天操,天天射 | 99久久精品国产免费看不卡 | 成人黄色在线电影 | 天天干天天天 | 69久久久| 日韩系列在线观看 | 五月婷香| 一级黄色片在线观看 | 最新中文字幕在线资源 | 在线播放你懂 | a黄色大片 | 国产香蕉久久 | 免费久久久久久 | 99视频精品免费观看, | 国产中文伊人 | 国产高清免费在线观看 | 亚洲色图av | 成年人电影免费看 | 欧美日韩国产一区二区在线观看 | 国产色小视频 | 美女国产精品 | 国产男女无遮挡猛进猛出在线观看 | av再线观看 | 毛片永久免费 | 亚洲精品免费视频 | av电影一区| av大全在线 | 国产区精品区 | 九九视频网| 久久手机精品视频 | 人人爽人人爽 | 免费视频97 | 天天爱天天操天天干 | 九七视频在线观看 | 天天天天天天操 | 国产资源免费在线观看 | 国产精品第2页 | 超碰伊人网 | 69国产在线观看 | 国产精品一区二区精品视频免费看 | 天天综合网天天综合色 | 又黄又爽又刺激的视频 | 欧美色图另类 | 欧美激精品 | 亚洲欧美va| 黄色av影视 | 中文字幕黄色网 | 91香蕉视频在线下载 | 成人在线网站观看 | 久久成人资源 | 中文字幕高清视频 | 亚洲女人天堂成人av在线 | 97av视频| 亚洲精品乱码久久久久久蜜桃不爽 | 国产成人久久77777精品 | 91视频久久久久久 | 婷婷丁香在线视频 | 久久与婷婷 | 欧美激情精品久久久久久免费 | 中文字幕电影一区 | 久久无码精品一区二区三区 | 久久综合久久久 | 超碰97在线资源 | 91亚洲在线观看 | 一级黄色大片在线观看 | www·22com天天操| 国产精品6 | 国产黄a三级三级 | 久热色超碰 | 欧美激情精品久久久久久免费 | 国产免费三级在线观看 | 97精品在线 | 免费日韩 精品中文字幕视频在线 | 国产一区二区在线影院 | 午夜视频在线观看一区二区 | 中文字幕在线观看视频网站 | 亚洲精品九九 | 狠狠的干狠狠的操 | 98涩涩国产露脸精品国产网 | 欧美大码xxxx| 国产精品97| 成av人电影| 亚洲精品视频在线观看视频 | 中国成人一区 | 中文字幕在线观看视频免费 | 欧美一进一出抽搐大尺度视频 | 日韩视频一区二区三区在线播放免费观看 | 五月婷婷中文字幕 | 91在线中文字幕 | 免费视频xnxx com| 国产一区二区高清不卡 | 一区二区三区日韩在线 | www日韩在线观看 | 亚洲高清色综合 | 日韩精品 在线视频 | 国产精品福利在线观看 | 99久久久国产精品免费99 | 亚洲综合视频在线播放 | 成人av在线影视 | 成人午夜剧场在线观看 | 国产免费影院 | 日韩高清黄色 | 97在线视频免费 | 99精品国产成人一区二区 | 日韩欧美一区二区三区在线 | 国产精品久久久久久a | 国产生活一级片 | 91成人蝌蚪 | 麻豆mv在线观看 | 国产精品久久久久四虎 | 99热最新精品 | 久久久久区 | 亚洲三级在线播放 | 国内精自线一二区永久 | 国产麻豆视频免费观看 | 亚洲一区二区三区精品在线观看 | 激情视频在线观看网址 | 久久激情视频 | 国产区精品在线 | 国产精品亚洲人在线观看 | 日韩精品免费在线 | 亚洲精品乱码久久久久久蜜桃欧美 | 激情av综合| 欧美日韩久 | 欧美a级免费视频 | 亚洲欧美日韩在线一区二区 | 亚洲精品午夜一区人人爽 | 国产精品地址 | 日本成人黄色片 | 亚洲黄色免费在线 | 国产成人高清在线 | 午夜精品一区二区三区在线 | 久久久久久国产精品亚洲78 | 在线播放 日韩专区 | 欧美在线aa| 黄色录像av | 涩涩色亚洲一区 | www·22com天天操 | 四虎在线永久免费观看 | 99在线热播精品免费99热 | 色综合久久久久久中文网 | 超级碰碰碰视频 | 日韩日韩日韩日韩 | 日韩精品欧美专区 | 不卡的av在线播放 | 超碰成人免费电影 | 91免费观看国产 | 欧美性爽爽 | 天天操伊人 | 国产精品美女毛片真酒店 | 高清免费av在线 | 亚洲精选99 | 久草青青在线观看 | 黄色大片入口 | 一级性视频 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 中文字幕在线观看一区二区 | 国产福利一区二区三区在线观看 | 国产精品久久久久免费观看 | 国产成人61精品免费看片 | 久久精品亚洲 | 久久精品国产亚洲 | 日韩在线免费电影 | 日韩欧美综合视频 | av官网在线 | 91最新国产| 国产黄色片一级 | 麻豆视频在线看 | 亚洲免费观看在线视频 | 国产精品久久久免费看 | 亚洲精品美女久久久久网站 | 韩国在线一区 | 国产精品毛片久久久久久久久久99999999 | 99九九99九九九视频精品 | 国产香蕉97碰碰碰视频在线观看 | 免费a视频| 亚洲日韩中文字幕在线播放 | 免费三级黄色片 | 九九视频精品在线 | 欧美精品久久天天躁 | 四虎在线观看精品视频 | 久久99在线视频 | 美女黄视频免费 | 正在播放 久久 | 日操操 | 国产麻豆精品在线观看 | 国产99区| 激情开心色 | 亚洲免费专区 | 亚洲视频在线免费观看 | 国产免费观看久久黄 | 国产精品久久久免费 | 亚洲视频精品在线 | 五月天激情综合 | 九九电影在线 | 免费看高清毛片 | 最近高清中文字幕 | 午夜体验区 | 国产手机免费视频 | 久久精品视频网站 | 色欧美88888久久久久久影院 | 综合激情网... | 久久蜜臀一区二区三区av | 欧美一级黄色视屏 | 中文字幕中文字幕在线一区 | 一区二区三区污 | 亚洲日b视频 | 欧美一二三视频 | 亚洲黄色成人av | 国产精品综合久久久久 | ww亚洲ww亚在线观看 | 综合久久久久 | 成人黄色小说在线观看 | 久久 亚洲视频 | 午夜影视一区 | 亚洲天堂网站视频 | 国产福利精品一区二区 | 国产精品情侣视频 | 国产色视频123区 | 色视频在线免费 | 久久久 精品 | 九九九九精品 | 久草在线资源观看 | 91在线免费公开视频 | 欧美日韩精品免费观看 | 爱爱av网站| 97干com| 久久天天躁狠狠躁亚洲综合公司 | 亚洲视频一 | 国产成人中文字幕 | 91男人影院 | 婷婷久久丁香 | 亚洲精品国产精品国自 | 福利一区在线视频 | 韩日av一区二区 | a√资源在线 | 久久久久久精 | 国产一区二区三区高清播放 | 最新av在线网址 | 99精品视频99 | 国产黄色精品视频 | 国产精品久久久久久电影 | 亚洲成人网av | 99热在线网站 | 91人人爽久久涩噜噜噜 | 成人污视频在线观看 | 亚洲永久精品在线观看 | 国产91粉嫩白浆在线观看 | 中文字幕在线高清 | 亚洲成人免费观看 | 成人av片免费观看app下载 | av片在线看 | 日韩一级网站 | 国产精品日韩欧美 | 美女视频是黄的免费观看 | 天天综合网 天天综合色 | 国产精品2018 | 日韩亚洲国产中文字幕 | 国产999精品久久久 免费a网站 | 人人爽人人爽人人片 | 亚洲国产精品va在线看 | www久久久 | 久久国产美女 | 免费色视频| aaa日本高清在线播放免费观看 | 国产美女在线观看 | 四虎在线免费观看 | 天天天干天天天操 | 欧美 日韩 成人 | 欧美一级视频免费 | 国产一区高清在线观看 | 日韩中文字幕一区 | 色爱区综合激月婷婷 | 91麻豆国产福利在线观看 | 国产一区二区在线观看免费 | 日本女人b | 成人四虎 | 国产免费观看高清完整版 | 精品国产一区二区三区四区在线观看 | av不卡网站 | 免费在线观看日韩视频 | 97色在线观看 | 久久精品福利 | 不卡视频国产 | 亚洲专区在线播放 | 91黄色视屏 | 精品国产乱码久久久久 | 国产精品18毛片一区二区 | 日日夜操| 91精品一| 亚洲国产成人精品在线观看 | 国产又粗又猛又爽 | 日韩免费在线观看网站 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 夜夜操天天 | 成人国产一区 | 成年人黄色免费网站 | 亚洲精品乱码久久 | 色综合久久88色综合天天人守婷 | 久久久资源网 | 免费在线视频一区二区 | 夜夜摸夜夜爽 | 婷婷在线五月 | 亚洲播放一区 | 国产色婷婷 | 精品国产区在线 | 又黄又刺激视频 | 欧美午夜一区二区福利视频 | 久久9999久久免费精品国产 | 久久久久久草 | 国产精品一区二区久久久久 | 伊人五月天 | 日韩黄视频 | www色综合| 日日插日日干 | 免费观看国产精品视频 | 最新国产在线视频 | 91污视频在线 | 国产成人一区二区三区电影 | 国产色妞影院wwwxxx | 欧美日韩免费一区二区 | 国产剧情在线一区 | 日精品在线观看 | 亚洲成人av一区二区 | 久视频在线 | 国产高清永久免费 | 欧美日韩三级 | 天天干天天操天天干 | 99精品亚洲 | 天天干视频在线 | 成人97视频| 午夜婷婷在线观看 | 在线 日韩 av| 狠狠色丁香久久婷婷综 | 97香蕉久久超级碰碰高清版 | 超碰在线免费福利 | 精品一区二区在线免费观看 | 一级国产视频 | 久久超级碰 | 国产美女免费看 | 天天射天天爽 | 在线 视频 一区二区 | 中文字幕一区二区三区精华液 | 97超碰中文字幕 | 青青河边草免费直播 | 337p欧美| 免费在线观看一区二区三区 | 91桃色国产在线播放 | 精品国产一二三四区 | 69av国产| 亚洲一级电影 | 婷婷精品在线视频 | 在线播放亚洲激情 | 在线视频一二区 | 黄色电影小说 | 一级黄色片在线播放 | 午夜久久久久久久久久影院 | 99精品国产视频 | 国产一区视频免费在线观看 | 日韩一区二区三区视频在线 | 久久tv视频| 精品国产aⅴ一区二区三区 在线直播av | 国产精品毛片久久久久久久久久99999999 | 欧美人人爱 | 美女黄频在线观看 | 国产成人精品一区二区三区福利 | 综合国产在线 | 亚洲色图美腿丝袜 | 亚洲资源 | 国产日韩在线观看一区 | 在线观看电影av | 久久久久久久久久久福利 | 国产美女在线观看 | 日本久久精品 | 91人人澡 | 波多野结衣视频一区二区三区 | 国产女人40精品一区毛片视频 | 免费成人在线观看视频 | 国产亚洲精品av | 99视频偷窥在线精品国自产拍 | av黄色亚洲 | 婷婷丁香激情综合 | 久草网视频在线观看 | 爱爱一区 | 国产精品乱码在线 | 又黄又刺激 | 午夜影视剧场 | 51久久夜色精品国产麻豆 | 精品一二 | 欧美狠狠色 | 天天射天天干 | 欧美日韩免费一区二区 | 五月婷婷久 | 久久精品香蕉视频 | 国产69久久| 国产精品一区久久久久 | 日韩av网站在线播放 | 国产资源精品在线观看 | 国产高清久久 | 欧美成天堂网地址 | 日韩欧美电影在线 | 99 久久久久 | 婷婷久久一区二区三区 | 精品女同一区二区三区在线观看 | 国产中文字幕第一页 | 国产一区在线免费观看 | 国产亚洲欧美日韩高清 | 日韩成人一级大片 | 亚洲成a人片77777kkkk1在线观看 | 久久国产精品久久精品 | 亚洲精品理论 | 午夜狠狠操 | 国产黄色电影 | 欧美在线视频不卡 | 99精品视频一区二区 | 欧美激情在线看 | 国产丝袜美腿在线 | 亚洲va欧美va人人爽春色影视 | 日本久久久久久 | 精品产品国产在线不卡 | 六月婷色 | 国产精品嫩草55av | 中文字幕国产精品 | 成人国产精品免费观看 | 国内丰满少妇猛烈精品播放 | www.av在线播放 | 亚洲国产精品小视频 | 中文字幕在线观看完整版 | 色婷婷成人网 | 久久综合五月天 | 日韩网站中文字幕 | 韩日精品在线 | 日日爽夜夜操 | 国产日韩中文字幕 | 91精品影视 | 久久久久久久久亚洲精品 | 17videosex性欧美 | 日本中文字幕免费观看 | 91传媒在线播放 | 毛片网站免费在线观看 | 精品一区二区久久久久久久网站 | 日韩理论影院 | 91视频三区 | 福利视频第一页 | 国产精品久久久久久久久久久不卡 | 久久精品牌麻豆国产大山 | 日韩精品视频第一页 | 国产一级片不卡 | 中文字幕在线视频网站 | 国产色视频一区二区三区qq号 | 中文字幕一区二区三区在线视频 | 黄色网址中文字幕 | 免费看色的网站 | 国语精品久久 | 久久视频这里有久久精品视频11 | 99产精品成人啪免费网站 | 中文字幕电影高清在线观看 | 国产又粗又长的视频 | 西西人体www444 | 日日夜夜人人精品 | 永久免费av在线播放 | 黄色视屏在线免费观看 | 国产午夜三级一区二区三桃花影视 | 午夜精品久久久久久久久久久久 | 九九久久久久99精品 | 性色av香蕉一区二区 | 久久精品免费看 | 久草电影网 | 久久国产精品视频免费看 | 久久精品亚洲精品国产欧美 | 97国产小视频 | 欧美一级片在线 | 日本丶国产丶欧美色综合 | 激情五月婷婷综合网 | 欧美va天堂va视频va在线 | 最近中文字幕在线中文高清版 | 亚洲国产成人在线播放 | 99热99热 | 国产精品高清在线观看 | 亚洲精品毛片一级91精品 | 樱空桃av | 国产又粗又长又硬免费视频 | 久久97久久| 欧美一级性生活视频 | 美国三级黄色大片 |