亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > BAT > 正文

dos下遍歷目錄和文件的代碼(主要利用for命令)

2020-07-26 20:18:55
字體:
來源:轉載
供稿:網友
===== 文件夾結構 =============================================
D:/test
---A Folder 1
|-----A file 1.txt

|-----A file 2.txt
|-----A file 3.txt
---B Folder 2
|-----B file 1.txt
|-----B file 2.txt
|-----B file 3.txt
|---B Folder 3
|-----B sub file 1.txt
|-----B sub file 2.txt
|-----B sub file 3.txt

復制代碼 代碼如下:

@echo off
set work_path=D:/test
D:
cd %work_path%
for /R %%s in (.,*) do (
echo %%s
)
pause

結果
D:/test/.
D:/test/A Folder 1/.
D:/test/A Folder 1/A file 1.txt
D:/test/A Folder 1/A file 2.txt
D:/test/A Folder 1/A file 3.txt
D:/test/B Folder 2/.
D:/test/B Folder 2/B file 1.txt
D:/test/B Folder 2/B file 2.txt
D:/test/B Folder 2/B file 3.txt
D:/test/B Folder 2/B Folder 3/.
D:/test/B Folder 2/B Folder 3/B sub file 1.txt
D:/test/B Folder 2/B Folder 3/B sub file 2.txt
D:/test/B Folder 2/B Folder 3/B sub file 3.txt
復制代碼 代碼如下:

@echo off
set work_path=D:/test
D:
cd %work_path%
for /R %%s in (.) do (
echo %%s
)
pause

結果
D:/test/.
D:/test/A Folder 1/.
D:/test/A Folder 1/A file 1.txt
D:/test/A Folder 1/A file 2.txt
D:/test/A Folder 1/A file 3.txt
D:/test/B Folder 2/.
D:/test/B Folder 2/B file 1.txt
D:/test/B Folder 2/B file 2.txt
D:/test/B Folder 2/B file 3.txt
D:/test/B Folder 2/B Folder 3/.
D:/test/B Folder 2/B Folder 3/B sub file 1.txt
D:/test/B Folder 2/B Folder 3/B sub file 2.txt
D:/test/B Folder 2/B Folder 3/B sub file 3.txt

那么
復制代碼 代碼如下:

for /R %%s in (.,*) do (
echo %%s
)


復制代碼 代碼如下:

for /R %%s in (.) do (
echo %%s
)

的區別是什么呢?
在有cd %work_path% 的時候,這兩個命令執行的結果是一樣的,就像我們上面舉的例子。但是
for /R %%s in (.,*) do (
echo %%s
)
的批處理中沒有cd %work_path% ,那么顯示的將是這個批處理文件所在文件夾下面的遍歷結果。

復制代碼 代碼如下:

@echo off
for /R "D:/test" %%s in (.) do (
echo %%s
)
pause

結果
D:/test/.
D:/test/A Folder 1/.
D:/test/B Folder 2/.
D:/test/B Folder 2/B Folder 3/.
復制代碼 代碼如下:

@echo off
for /R "D:/test" %%s in (.,*) do (
echo %%s
)
pause

結果
D:/test/.
D:/test/A Folder 1/.
D:/test/A Folder 1/A file 1.txt
D:/test/A Folder 1/A file 2.txt
D:/test/A Folder 1/A file 3.txt
D:/test/B Folder 2/.
D:/test/B Folder 2/B file 1.txt
D:/test/B Folder 2/B file 2.txt
D:/test/B Folder 2/B file 3.txt
D:/test/B Folder 2/B Folder 3/.
D:/test/B Folder 2/B Folder 3/B sub file 1.txt
D:/test/B Folder 2/B Folder 3/B sub file 2.txt
D:/test/B Folder 2/B Folder 3/B sub file 3.txt

這樣的話看出來區別了吧。

再看一個=================================
復制代碼 代碼如下:

@echo off
for /R "D:/test" %%s in (*) do (
echo %%s
)
pause

結果
D:/test/A Folder 1/A file 1.txt
D:/test/A Folder 1/A file 2.txt
D:/test/A Folder 1/A file 3.txt
D:/test/B Folder 2/B file 1.txt
D:/test/B Folder 2/B file 2.txt
D:/test/B Folder 2/B file 3.txt
D:/test/B Folder 2/B Folder 3/B sub file 1.txt
D:/test/B Folder 2/B Folder 3/B sub file 2.txt
D:/test/B Folder 2/B Folder 3/B sub file 3.txt
就是只顯示了文件
VisitF.bat - 對指定路徑指定文件進行遍歷的程序
復制代碼 代碼如下:

:: VisitF.bat - 對指定路徑指定文件進行遍歷的程序
:: 第一參數為要遍歷的文件(支持通配符),第二參數為要遍歷的路徑(缺省為C盤根)
@echo off
:main
if [%1]==[] if not exist goto end
:init
if exist if exist goto loop
set file=%1
set base=%2
if [%2]==[] set base=c:
dir %base%/%file% /s /a /b >
echo e 100 ''set file='' >
echo w >>
echo q >>
:loop
fc nul /n | find " 1:" > setfile.bat
if errorlevel 1 goto restore
debug setfile.bat nul
call setfile.bat
echo Visiting the file: %file%
:: User specified visit code replace this line
find "%file%" /v
copy > nul
goto loop
:restore
if exist del
if exist del
if exist del
if exist setfile.bat del setfile.bat
:end


VisitD.bat - 對指定路徑指定目錄進行遍歷的程序
復制代碼 代碼如下:

:: VisitD.bat - 對指定路徑指定目錄進行遍歷的程序
:: 第一參數為要遍歷的目錄(支持通配符),第二參數為要遍歷的路徑(缺省為C盤根)
@echo off
:main
if [%1]==[] if not exist goto end
:init
if exist if exist goto loop
set dir=%1
set base=%2
if [%2]==[] set base=c:
dir %base%/%dir% /s /ad /b >
echo e 100 'set dir=' >
echo w >>
echo q >>
:loop
fc nul /n | find " 1:" > setdir.bat
if errorlevel 1 goto restore
debug setdir.bat nul
call setdir.bat
echo Visiting the dir: %dir%
:: User specified visit code replace this line
find "%dir%" /v
copy > nul
goto loop
:restore
if exist del
if exist del
if exist del
if exist setdir.bat del setdir.bat
:end

VisitL.bat - 對指定文件列表中的文件進行遍歷的程序
復制代碼 代碼如下:

:: VisitL.bat - 對指定文件列表中的文件進行遍歷的程序
:: 參數為要遍歷的文件列表
@echo off
:main
if [%1]==[] if not exist goto end
:init
set filelist=%1
if [%1]==[] set filelist=
if not exist %filelist% goto end
copy %filelist% > nul
if exist goto loop
echo e 100 'set file=' >
echo w >>
echo q >>
:loop
fc nul /n | find " 1:" > setfile.bat
if errorlevel 1 goto restore
debug setfile.bat nul
call setfile.bat
echo Visiting the file: %file%
:: User specified visit code replace this line
find "%file%" /v
copy > nul
goto loop
:restore
if exist del
if exist del
if exist del
if exist setfile.bat del setfile.bat
:end


VisitI.bat - 對指定路徑指定DIR信息的文件進行遍歷操作的的程序
復制代碼 代碼如下:

:: VisitI.bat - 對指定路徑指定DIR信息的文件進行遍歷操作的的程序
:: 第一參數為指定的DIR信息項,第二參數為要遍歷的路徑(缺省為當前路徑)
:: 注意:DIR信息項可以是文件名,擴展名,日期,時間等DIR命令提供的目錄信息項
:: 可以同時使用多項,但必須加一對引號,參數格式也須嚴格符合DIR的信息格式
@echo off
:main
if [%1]==[] goto end
:init
if exist if exist goto loop
set info=%1
set base=%2
if [%2]==[] set base=.
dir %base%/. /s /a /b >
echo e 100 ''''set file='''' >
echo w >>
echo q >>
:loop
fc nul /n | find " 1:" > setfile.bat
if errorlevel 1 goto restore
debug setfile.bat nul
call setfile.bat
dir "%file%" | find %info% > nul
if not errorlevel 1 echo Visit file: "%file%"
:: if not errorlevel 1
find "%file%" /v
:: "%file%" 參數決定了所匹配的子目錄下的所有文件和目錄均不會再次匹配
copy > nul
goto loop
:restore
if exist del
if exist del
if exist del
if exist setfile.bat del setfile.bat
set info=
set file=
set base=
:end


Visit.bat - 文件遍歷批處理程序
復制代碼 代碼如下:

:: Visit.bat - 文件遍歷批處理程序
:: Will Sort - 10/17/2004 - V2
::
:: 程序用途:
:: 對指定文件集/目錄集/文件列表執行指定操作
::
:: 命令行說明:
:: 1. VISIT 文件集/目錄集 [參數]
:: 對文件集/目錄集執行指定操作
:: 2. VISIT @ 文件列表
:: 對指定文件列表中的文件執行指定操作
::
:: 注意事項:
:: - 文件集/目錄集 中可包含有效路徑和通配符
:: - 路徑缺省為當前路徑,文件集缺省為 *.* (并非所有文件)
:: - 文件集/目錄集 含空格時需用雙引號引起
:: - [參數] 支持的DIR開關: /S /A /O /L等不與 /B 沖突者
:: - [參數] 不支持的DIR開關: /W /P /V 等與 /B 沖突者
:: - [操作] 由調用者預先寫入 visitcmd.bat 中
:: - [操作] 中使用 %VisitFile% 引用遍歷文件
:: - 程序檢查檢查 [文件列表] 是否存在,但不檢查它是否有效
:: - 不遍歷隱藏/系統目錄下的目錄和文件(在命令行中指定時例外)
::
:: 用法示例:
:: visit c:/ /ad /s 遍歷C盤所有目錄,包含子目錄
:: visit "C:/My document" /a-d 遍歷"C:/My document"下所有文件
:: visit C:/*.zip /a /s 遍歷C盤所有.zip壓縮包,包含子目錄
:: 如想遍歷多個文件/目錄集,可多次使用"DIR 文件集 /a /s>>文件列表"
:: 生成一個完整的文件列表,再使用文件列表進行遍歷;或者使用VisitCE.Bat
:: 在遍歷未顯式指定的隱藏/系統目錄時,可以用"attrib 文件集 /s"生成
:: 文件列表,然后在visitcmd.bat的代碼中引用%VisitFile%第三至最后的串,
:: 再使用文件列表進行遍歷
::
:: 測試報告:
:: 在 Win98 命令行方式下有限黑箱測試通過
:: 性能仍然是最大的瓶頸
::
@echo off
if "%1"=="@" goto CopyList
:MakeList
dir /b %1 %2 %3 %4 %5 %6 > ~
find "~" /v < ~ > ~
if not errorlevel 1 copy ~ ~>nul
goto MakePreLine
:CopyList
if not [%2]==[] if exist %2 copy %2 ~>nul
if not exist ~ goto End
:MakePreLine
echo set VisitFile=> ~
for %%c in (rcx e w q) do echo %%c>> ~
debug ~ < ~ > nul
if [%OS%]==[Windows_NT] chcp 936 > nul
:LoopVisit
copy ~+~ ~ > nul
find "set VisitFile=" < ~ > ~visit.bat
call ~visit.bat
if "%VisitFile%"=="" goto Clear
if not exist visitcmd.bat echo Visiting %VisitFile%
if exist visitcmd.bat call visitcmd.bat
find "set VisitFile=" /v < ~ > ~
goto LoopVisit
:Clear
del ~visit.*
set VisitFile=
:End

VisitCE.bat - 文件遍歷批處理程序命令行增強版
復制代碼 代碼如下:

:: VisitCE.bat - 文件遍歷批處理程序命令行增強版
:: Will Sort - 10/17/2004 - V2CE
::
:: 程序用途:
:: 對指定路徑/文件列表下的指定文件/目錄集執行指定操作
::
:: 命令行說明:
:: 1. VISIT [路徑1 路徑2...] [開關1 開關2...] [文件集1 文件集2...]
:: 對 [路徑] 和 [開關] 限定下的 [文件集] 執行指定操作
:: 2. VISIT @ 文件列表1 [文件列表2...]
:: 對指定 [文件列表] 中的文件執行指定操作
::
:: 注意事項:
:: - [路徑] [參數] [文件集] 均可不選或多選
:: - [路徑] 中不可包含通配符,[文件集] 中可包含有效路徑和通配符
:: - [路徑] 缺省為當前路徑,[文件集] 缺省為 *.* (并非所有文件)
:: - [路徑] [文件集] 含空格時需用雙引號引起
:: - [參數] 支持的DIR開關: /S /A /O /L等不與 /B 沖突者
:: - [參數] 不支持的DIR開關: /W /P /V 等與 /B 沖突者
:: - [操作] 由調用者預先寫入 visitcmd.bat 中
:: - [操作] 中使用 %VisitFile% 引用遍歷文件
:: - 程序檢查檢查 [文件列表] 是否存在,但不檢查它是否有效
:: - 不遍歷隱藏/系統目錄下的目錄和文件(在命令行中指定時例外)
::
:: 用法示例:
:: visit c:/ /ad /s 遍歷C盤所有目錄,包含所有子目錄
:: visit "C:/My document" /a-d 遍歷"C:/My document"下所有文件
:: visit c:/ d:/ e:/ /s /a /on 遍歷C,D,E中所有文件,并按文件名排序
:: visit / /a 遍歷當前盤根目下所有文件和目錄
:: 在遍歷未顯式指定的隱藏/系統目錄時,可以用"attrib 文件集 /s"生成
:: 文件列表,然后在visitcmd.bat的代碼中引用%VisitFile%第三至最后的串,
:: 再使用文件列表進行遍歷
::
:: 測試報告:
:: 在 Win98 命令行方式下有限黑箱測試通過
:: 性能仍然是最大的瓶頸
::
@echo off
if "%1"=="$" goto MakeList
if "%1"=="@" goto CopyList
if "%1"=="" goto End
set VisitCommand=%0
:GetArgu
:GetPath
if not exist %1./nul goto GetSwitch
set VisitPath=%VisitPath% %1
goto GetNext
:GetSwitch
echo %1 | find "/" > nul
if errorlevel 1 goto GetFilter
set VisitSwitch=%VisitSwitch% %1
goto GetNext
:GetFilter
echo %1 | find "*" > nul
if not errorlevel 1 goto SetFilter
echo %1 | find "?" > nul
if errorlevel 1 goto End
:SetFilter
set VisitFilter=%VisitFilter% %1
:GetNext
shift
if not [%1]==[] goto GetArgu
%VisitCommand% $ %VisitFilter%
:MakeList
if not [%VisitPath%]==[] goto ForMake
:DirMake
dir %2 /b %VisitSwitch% >> ~
goto MakeNext
:ForMake
for %%p in (%VisitPath%) do dir %%p./%2 /b %VisitSwitch% >> ~
:MakeNext
shift
if not [%2]==[] goto MakeList
find "~" /v < ~ > ~
if not errorlevel 1 copy ~ ~>nul
goto MakePreLine
:CopyList
if not [%2]==[] if exist %2 type %2>>~
shift
if not [%2]==[] goto CopyList
:MakePreLine
if not exist ~ goto End
echo set VisitFile=> ~
for %%c in (rcx e w q) do echo %%c>> ~
debug ~ < ~ > nul
if [%OS%]==[Windows_NT] chcp 936 > nul
:LoopVisit
copy ~+~ ~ > nul
find "set VisitFile=" < ~ > ~visit.bat
call ~visit.bat
if "%VisitFile%"=="" goto Clear
if not exist visitcmd.bat echo Visiting %VisitPath% %VisitSwitch% %VisitFilter% - %VisitFile%
if exist visitcmd.bat call visitcmd.bat
find "set VisitFile=" /v < ~ > ~
goto LoopVisit
:Clear
for %%f in (~visit.*) do del %%f
for %%e in (Command Path Switch Filter File) do set Visit%%e=
:End

在2000sp4 下出現類似的問題,第二個問題實際上也是fc的不兼容問題,他在按行號顯示時,每行文字前有8 個字節位,而不是dos6和win9x 下的9 個,所以解決起來也很簡單,將debug 腳本中的 e 100 'set file='改為 e 100 'set fil=' 即可。

  但是,這只是就事論事而已,以上的提到的三個批處理,只是我在dos 下練兵用的試驗原型,做得很粗糙,自從今年3 月份正式轉向win98 之后,使用中遇到了很多新問題,比如文件名包含空格的問題,系統/ 隱藏屬性目錄的問題;在nt下使用,又遇到了中文文件名的問題;而且由于循環體中使用了過多的文本流控制,導致了效率的嚴重低下;另外,三個程序功能上和實現上并沒有太大的差別,沒有拆分的必要。
  綜所上述,將以上代碼重寫就成為必須。合并代碼,彌補漏洞,改善性能,書寫文檔,就出現了所謂的 V2 版,這中間其實并沒有花很多功夫。

  然而,一個偶然的下午,突然心血來潮,何不將visit 的命令行功能做一下增強,比如支持多個路徑、多個過濾器(filter)、多個文件列表,原想只是加一個命令行參數分析循環,然而真正實現起來,卻再次體會到了命令行的復雜,if for嵌套時沖定向輸出,判定目錄時根目錄與子目錄的不同,for 對過濾器的低能替換(win9x/dos) ,一個個新問題摩肩接踵,層出不窮,竟然整整耗了我大半個工作日的時間,才勉強實現了一個粗糙的版本,這就是所謂的 V2CE 版,對與嚴格的測試我沒有多大的信心。

  現在,再回頭看我的工作,其實那個 V2CE 版其實是沒有多大的應用價值。多個路徑和過濾器,完全可以通過多次調用visit 來實現,而且實際上,我們大多數情況下只用一個路徑和過濾器;而且,多參數控制帶來了易用度的下降,用戶總是對參數繁多的程序有一定的心理障礙,我個人對dos 壓縮軟件的愛好,從高到低依次是rar,zip,arj, 易用度就是第一靠量;另外,最重要的是,多參數控制導致了代碼量和復雜性的大幅提升,這個程序一度讓我鉆進了if for構建的幽魂迷宮而不知南北西東,程序的可讀性越來越差,調試起來也越來越困難,同時兼容性上拉上了更多的絆馬索。

  這些,就是功能提升所付出的代價,雖然這只是一個比較極端的例子,但是功能與簡潔的平衡在程序設計的其重要性可見一斑。親和性的界面并不意味著親和性的代碼,人性化的需求并不意味著人性化的實現,一味將使用方的復雜性轉嫁給設計者(比如Windows), 并不是一個很聰明的主意,反之亦然(比如Linux ),這尚不考慮代碼功能增強對設計方和使用方的雙重施壓。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久高潮| 亚洲爱爱爱爱爱| 555www成人网| 国产午夜精品全部视频播放| 国产精品福利网站| 久久九九免费视频| 搡老女人一区二区三区视频tv| 精品日本高清在线播放| 丁香五六月婷婷久久激情| 欧美日本高清一区| 日本中文字幕成人| 91久久久亚洲精品| 91精品国产电影| 亚洲国产精品成人精品| 日韩免费看的电影电视剧大全| 国产精品wwww| 日韩欧美aⅴ综合网站发布| 日韩av高清不卡| 亚洲女人天堂网| 欧美亚洲在线播放| 久久久久久久影院| 久久伊人精品视频| 日韩电影中文 亚洲精品乱码| 亚洲精品国产精品国自产观看浪潮| 国产日韩中文在线| 国产欧美日韩最新| 国产精品久久久久久久久久新婚| 91超碰caoporn97人人| 欧美在线日韩在线| 欧美特黄级在线| 欧洲一区二区视频| 欧美日韩免费网站| 综合av色偷偷网| 久精品免费视频| 国产精品日韩一区| 亚洲国产成人久久| www.欧美精品一二三区| 动漫精品一区二区| 亚洲精品一区二区三区婷婷月| 亚洲最新中文字幕| 国产精品综合网站| 国产成人精品在线播放| 国产精品一区二区久久| 欧美激情欧美狂野欧美精品| 日韩在线观看成人| 国产成人avxxxxx在线看| 亚洲国产精品人人爽夜夜爽| 青草青草久热精品视频在线网站| 高清亚洲成在人网站天堂| 日韩电影中文字幕一区| 欧美大尺度激情区在线播放| 欧美第一黄色网| 亚洲sss综合天堂久久| 影音先锋日韩有码| 久久精品国产69国产精品亚洲| 国产一区二区av| 亚洲精品视频中文字幕| 日韩精品极品在线观看| 中文字幕日韩精品在线观看| 精品呦交小u女在线| www.亚洲免费视频| 欧美最顶级的aⅴ艳星| 亚洲精品美女网站| 国产91成人在在线播放| 91香蕉亚洲精品| 欧美专区福利在线| 日韩av免费在线| 黑人欧美xxxx| 国产自产女人91一区在线观看| 91精品国产九九九久久久亚洲| 91久久精品美女高潮| 国产欧美精品久久久| 日韩精品免费在线观看| 欧美精品videosex牲欧美| 欧美亚洲另类视频| 成人免费淫片视频软件| 91免费在线视频网站| 成人写真福利网| 不卡av在线播放| 97欧美精品一区二区三区| 国产精品羞羞答答| 一本色道久久综合狠狠躁篇的优点| 色综合男人天堂| 久久久久久97| 欧美视频一二三| 亚洲一区二区精品| 久久99久久99精品中文字幕| 精品无人区乱码1区2区3区在线| 一本色道久久综合狠狠躁篇的优点| 国产精品第一页在线| 中文字幕亚洲无线码a| 欧美视频在线视频| 国产视频精品免费播放| 日韩精品高清在线| 日本一区二区在线免费播放| 欧美成人免费在线视频| 亚洲奶大毛多的老太婆| 国产精品久久久久av| 亚洲国产成人久久综合| 久久久久久久久久久免费精品| 精品亚洲aⅴ在线观看| 色妞色视频一区二区三区四区| 亚洲精品国产免费| 欧美成aaa人片在线观看蜜臀| 国产精品高潮在线| 精品亚洲一区二区三区| 国产成人精品电影久久久| 欧美亚洲伦理www| www.日韩不卡电影av| 日韩精品www| 中文字幕在线精品| 亚洲午夜小视频| 国产精品第一第二| 欧美激情第6页| 国产成人鲁鲁免费视频a| 国产一区二区三区视频免费| 亚洲伊人一本大道中文字幕| 成人欧美一区二区三区黑人孕妇| 日韩在线观看免费av| 日韩在线精品视频| 国产精品国产三级国产aⅴ浪潮| 久久久久女教师免费一区| 久久人人爽人人| 亚洲跨种族黑人xxx| 亚洲综合中文字幕在线| 久久精品视频中文字幕| 久久精品视频亚洲| 一本色道久久88综合亚洲精品ⅰ| 久久精品国产亚洲一区二区| 国产精品爱啪在线线免费观看| 亚洲一区二区国产| 九九热这里只有精品6| 亚洲精品在线不卡| 国产免费观看久久黄| 久久久久久久久久久91| 亚洲国内高清视频| 成人黄色大片在线免费观看| 国产999在线观看| 久久福利视频网| 欧美日本亚洲视频| 国产精品成人观看视频国产奇米| 欧美中文字幕视频| 国产欧美日韩精品在线观看| 国语自产精品视频在线看抢先版图片| 国产成人精品久久| 全亚洲最色的网站在线观看| 国产精品美女视频网站| 国产免费一区二区三区在线能观看| 国产一区二区三区日韩欧美| 国产精品永久免费观看| 日韩中文字幕在线看| 欧美肥臀大乳一区二区免费视频| 日韩美女激情视频| 国产精品国语对白| 亚洲国产精品中文| 色天天综合狠狠色| 国产成人综合精品在线| 美日韩在线视频| 俺也去精品视频在线观看| 亚洲精品免费一区二区三区| 亚洲男人天天操| 欧美尤物巨大精品爽| 国内自拍欧美激情| 欧美在线一级视频|