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

首頁 > 編程 > BAT > 正文

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

2020-03-29 20:03:08
字體:
來源:轉載
供稿:網友
===== 文件夾結構 =============================================
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
午夜精品美女自拍福到在线| 国产大片精品免费永久看nba| 亚洲free性xxxx护士白浆| 成人亚洲欧美一区二区三区| 日韩电视剧在线观看免费网站| 色在人av网站天堂精品| 黄网站色欧美视频| 日韩男女性生活视频| 欧美一级大片在线免费观看| zzijzzij亚洲日本成熟少妇| 国产美女久久精品香蕉69| 红桃av永久久久| 亚洲第一免费播放区| 欧美老女人在线视频| 亚洲精品国精品久久99热一| 国产婷婷色综合av蜜臀av| 成人久久精品视频| 韩剧1988免费观看全集| 在线观看日韩av| 亚洲自拍偷拍第一页| 国产日韩欧美91| 欧美国产日本在线| 91chinesevideo永久地址| 国产亚洲精品久久久久久牛牛| 欧美一级电影在线| 一区二区欧美亚洲| 国产精品视频网| 亚洲色图13p| 亚洲欧美日韩国产成人| 国产91免费观看| 91国偷自产一区二区三区的观看方式| 欧美多人乱p欧美4p久久| 欧美二区乱c黑人| 国产第一区电影| 黑人巨大精品欧美一区二区三区| 国产精品视频xxxx| 久操成人在线视频| 96精品久久久久中文字幕| 91sao在线观看国产| 日本成人黄色片| 成人国产精品色哟哟| 国产精品永久在线| 久久成人亚洲精品| 亚洲91精品在线观看| 久久69精品久久久久久久电影好| 国产精品1区2区在线观看| 国产精品欧美久久久| 国产精品一久久香蕉国产线看观看| 2021国产精品视频| 亚洲毛片在线免费观看| 精品视频一区在线视频| 国产亚洲成av人片在线观看桃| 亚洲精品在线视频| 91高清在线免费观看| 欧美精品电影在线| 国产精品成人播放| 日韩av电影在线免费播放| 亚洲最大激情中文字幕| 国模精品一区二区三区色天香| 欧美日韩国产色视频| 日韩女在线观看| 久久国产精品影片| 精品福利在线观看| 日韩精品欧美国产精品忘忧草| 成人免费看片视频| 亚洲精品自拍偷拍| 久久久久久久香蕉网| 国产脚交av在线一区二区| 麻豆国产va免费精品高清在线| 精品视频在线播放色网色视频| 欧美日本啪啪无遮挡网站| 69国产精品成人在线播放| 欧美精品情趣视频| 91久久久久久久久| 欧美黑人国产人伦爽爽爽| 国产日韩综合一区二区性色av| 日韩视频在线免费观看| 北条麻妃在线一区二区| 欧美一级视频免费在线观看| 日韩黄色高清视频| 欧美日韩国产影院| 在线看福利67194| 91国语精品自产拍在线观看性色| 精品福利免费观看| 亚洲国产精品va在线看黑人动漫| 亚洲人成电影网站| 一区二区三区国产在线观看| 91亚洲精华国产精华| 性欧美亚洲xxxx乳在线观看| 国产一区二区三区日韩欧美| 国产精品自拍网| 久久久极品av| 久久免费福利视频| 久久久久久亚洲精品| 日韩va亚洲va欧洲va国产| 日韩电影视频免费| 欧美激情视频一区二区三区不卡| 日韩电影第一页| 尤物tv国产一区| 国产精品亚洲第一区| 日韩精品极品毛片系列视频| 日韩在线视频网站| 精品久久久久久久久久久久久久| 亚洲精品天天看| 国产小视频91| 久久久精品一区二区三区| 国产午夜精品美女视频明星a级| 国产美女直播视频一区| 国产aⅴ夜夜欢一区二区三区| 91免费国产视频| 在线午夜精品自拍| 国产精品久久久| 亚洲淫片在线视频| 色婷婷综合久久久久| 日韩在线精品视频| 91精品国产自产在线老师啪| 日韩欧美成人精品| 欧美日本高清视频| 一区二区三区回区在观看免费视频| 另类图片亚洲另类| 草民午夜欧美限制a级福利片| 精品欧美国产一区二区三区| 国产精品人成电影| 亚洲欧洲国产一区| 国产精品999| 国产成人亚洲综合91精品| 日韩在线视频免费观看| 欧美成人亚洲成人| 亚洲精品成a人在线观看| 亚洲国产三级网| 成人激情视频在线播放| 成人免费看黄网站| 中文字幕亚洲欧美| 91精品久久久久久久久青青| 91亚洲一区精品| 91精品国产综合久久香蕉922| 91精品国产91久久久久久| 久久精品视频99| 性色av香蕉一区二区| 欧美极品在线播放| 美女久久久久久久久久久| 欧美大片在线看免费观看| 欧美xxxx综合视频| 亚洲成年网站在线观看| 欧美一区二区视频97| 亚洲色图第一页| 成人有码在线播放| 国产精品久久久久久久久久东京| 欧美区二区三区| 日韩在线观看成人| 国产精品久久婷婷六月丁香| 久久噜噜噜精品国产亚洲综合| 98精品国产高清在线xxxx天堂| 欧美在线一级视频| 亚洲人成欧美中文字幕| 亚洲欧美国内爽妇网| 亚洲成avwww人| 欧美电影免费观看高清完整| 国产a∨精品一区二区三区不卡| 欧美激情xxxx| 国产盗摄xxxx视频xxx69| 亚洲欧美一区二区精品久久久| 亚洲国产精品网站| 7m精品福利视频导航|