标题:
[技术讨论]
這個 dir 不知嚇跑多少人
[打印本页]
作者:
nwm310
时间:
2016-11-25 19:49
标题:
這個 dir 不知嚇跑多少人
本帖最后由 nwm310 于 2016-11-25 19:55 编辑
Z:\>tree /f
列出資料夾 PATH
磁碟區序號為 00000099 5566:7788
Z:.
├─a1
│ └─a2
│ 3.txt
│
└─b1
└─b2
3.txt
Z:\>dir /b /s
Z:\a1
Z:\b1
Z:\a1\a2
Z:\a1\a2\3.txt
Z:\b1\b2
Z:\b1\b2\3.txt cmd結果
=======================================
PS Z:\> (dir -r).FullName
Z:\a1
Z:\b1
Z:\a1\a2
Z:\a1\a2\3.txt
Z:\b1\b2
Z:\b1\b2\3.txt PowerShell結果
================================================
Z:\>dir a* /b /s
Z:\a1
Z:\a1\a2
cmd結果:
列出 a* (N層)
================================================
PS Z:\> (dir a* -r).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
PowerShell結果:
少了 Z:\a1 多了 Z:\a1\a2\3.txt
================================================
待測試理論:
dir a* -r 的兩種意思:
dir a* 的結果只有資料夾:
進入 Z:\a* 列出「裡面的所有內容(不篩選)」 (N層)
Z:\a* 本身不列出
dir a* 的結果 其他情形(找不到 or 只有檔案 or 有檔案和資料夾):
列出 a* (N層)
測試 in PowerShell 5.0
=================================================
dir 3* 的結果(找不到)
PS Z:\> (dir 3* -r).FullName
Z:\a1\a2\3.txt
Z:\b1\b2\3.txt
列出 3* (N層)
=================================================
md Z:\3 之後
dir 3* 的結果(只有資料夾)
PS Z:\> (dir 3* -r).FullName
PS Z:\>
進入 Z:\3* 列出「裡面的所有內容(不篩選)」 (N層)
Z:\3* 本身不列出
Z:\3* 裡面沒東西,所以沒反應
==================================================
新增 Z:\3\5.txt Z:\3\7 Z:\3\7\9.txt
dir 3* 的結果(只有資料夾)
PS Z:\> (dir 3* -r).FullName
Z:\3\7
Z:\3\7\9.txt
Z:\3\5.txt
進入 Z:\3* 列出「裡面的所有內容(不篩選)」 (N層)
Z:\3* 本身不列出
===================================================
新增 Z:\3F.jpg 之後
dir 3* 的結果(有檔案和資料夾)
PS Z:\> (dir 3* -r).FullName
Z:\3
Z:\a1\a2\3.txt
Z:\b1\b2\3.txt
Z:\3F.jpg
列出 3* (N層)
====================================================
刪除 Z:\3 之後
dir 3* 的結果(只有檔案)
PS Z:\> (dir 3* -r).FullName
Z:\a1\a2\3.txt
Z:\b1\b2\3.txt
Z:\3F.jpg
列出 3* (N層)
=====================================================
不使用 * 明確寫出名稱的情形
Z:\>dir a1 /b /s
Z:\a1\a2
Z:\a1\a2\3.txt
PS Z:\> (dir a1 -r).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
=====================================================
待測試理論 (-r 和 -i 的搭配):
dir a* -r 的兩種意思:
dir a* 的結果只有資料夾:
進入 Z:\a* 列出「裡面的所有內容(不篩選)」 (N層)
Z:\a* 本身不列出
dir a* 的結果 其他情形(找不到 or 只有檔案 or 有檔案和資料夾):
列出 a* (N層)
dir a* -r -i *
dir a* 的結果:
如果是檔案,符合 「-i 所篩選的內容」就列出
也就是:要檢查兩個地方 a* 和 -i *
如果是資料夾,進入 Z:\a* 用 -i * 去篩選裡面的內容 (N層)
Z:\a* 本身不列出
也就是:用 a* 來檢查「起始點資料夾」 用 -i * 來檢查內容物 (N層)
測試 in PowerShell 5.0
====================================================
PS Z:\> tree /f
列出資料夾 PATH
磁碟區序號為 000000D2 5566:7788
Z:.
├─a1
│ └─a2
│ 3.txt
│
└─b1
└─b2
3.txt
=====================================================
dir a* 的結果(只有資料夾)
PS Z:\> (dir a* -r).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
進入 Z:\a* 列出「裡面的所有內容(不篩選)」 (N層)
Z:\a* 本身不列出
PS Z:\> (dir a* -r -i *).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
PS Z:\> (dir a* -r -i *2).FullName
Z:\a1\a2
PS Z:\> (dir a* -r -i *2 , 3*).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
PS Z:\> (dir a* -r -i 3*).FullName
Z:\a1\a2\3.txt
PS Z:\> (dir a* -r -i a*).FullName
Z:\a1\a2
PS Z:\> (dir a* -r -i *.txt).FullName
Z:\a1\a2\3.txt
PS Z:\> (dir a* -r -i a*, *.txt).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
進入 Z:\a* 用 -i * 去篩選裡面的內容 (N層)
Z:\a* 本身不列出
==============================================
新增 Z:\a5.txt 之後
dir a* 的結果(有檔案和資料夾)
PS Z:\> (dir a* -r).FullName
Z:\a1
Z:\a1\a2
Z:\a5.txt
列出 a* (N層)
PS Z:\> (dir a* -r -i *).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
Z:\a5.txt
PS Z:\> (dir a* -r -i *2).FullName
Z:\a1\a2
PS Z:\> (dir a* -r -i *2 , 3*).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
PS Z:\> (dir a* -r -i *2 , 3*, *5*).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
Z:\a5.txt
Z:\a5.txt 符合兩個地方,所以列出
PS Z:\> (dir a* -r -i a*).FullName
Z:\a1\a2
Z:\a5.txt
PS Z:\> (dir a* -r -i *.txt).FullName
Z:\a1\a2\3.txt
Z:\a5.txt
================================================
dir 3* 的結果(沒有東西)
PS Z:\> (dir 3* -r).FullName
Z:\a1\a2\3.txt
Z:\b1\b2\3.txt
列出 3* (N層)
PS Z:\> (dir 3* -r -i *).FullName
PS Z:\>
沒反應,Z:\3* 沒有找到東西
===================================================
新增 Z:\3F.jpg 之後
dir 3* 的結果(只有檔案)
PS Z:\> (dir 3* -r).FullName
Z:\a1\a2\3.txt
Z:\b1\b2\3.txt
Z:\3F.jpg
列出 3* (N層)
PS Z:\> (dir 3* -r -i *).FullName
Z:\3F.jpg
PS Z:\> (dir 3* -r -i *2).FullName
PS Z:\>
-i *2 不符合,所以沒列出
PS Z:\> (dir 3* -r -i *g).FullName
Z:\3F.jpg
=====================================================
待測試理論 -i * (有 -r 無 -r的時候):
dir a* -r -i *
dir a* 的結果:
如果是檔案,符合 「-i 所篩選的內容」就列出
也就是:要檢查兩個地方 a* 和 -i *
如果是資料夾,進入 Z:\a* 用 -i * 去篩選裡面的內容 (N層)
Z:\a* 本身不列出
也就是:用 a* 來檢查「起始點資料夾」 用 -i * 來檢查內容物 (N層)
dir a* -i *
dir a* 的結果:
如果是檔案,符合 「-i 所篩選的內容」就列出
也就是:要檢查兩個地方 a* 和 -i *
如果是資料夾,符合 「-i 所篩選的內容」之後,用 -i * 去篩選裡面的內容 (只有 1 層)
也就是:Z:\a*要檢查兩個地方 a* 和 -i *
裡面的內容要檢查一個地方 -i *
Z:\a* 本身一律不列出
問題在於:資料夾就算符合了 -i * 也不會列出
資料夾內容不符合 a* 仍然會列出
測試 in PowerShell 5.0
==================================================
PS Z:\> tree /f
列出資料夾 PATH
磁碟區序號為 00000076 5566:7788
Z:.
├─a1
│ └─a2
│ 3.txt
│
└─b1
└─b2
3.txt
===================================================
dir a* 的結果(只有資料夾)
PS Z:\> (dir a* -r -i *).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
PS Z:\> (dir a* -r -i *2).FullName
Z:\a1\a2
PS Z:\> (dir a* -r -i 3*).FullName
Z:\a1\a2\3.txt
進入 Z:\a* 用 -i * 去篩選Z:\a*裡面的內容 (N層)
Z:\a* 本身不列出
也就是:用 a* 來檢查「起始點資料夾」 用 -i * 來檢查內容物 (N層)
不使用 -r
PS Z:\> (dir a* -i *).FullName
Z:\a1\a2
Z:\a1 符合 a* 和 -i *
a2 符合 -i *
PS Z:\> (dir a* -i *2).FullName
PS Z:\>
沒反應,Z:\a1 不符合 -i *2
PS Z:\> (dir a* -i *1 , *2).FullName
Z:\a1\a2
Z:\a1 符合 a* 和 -i *1
a2 符合 -i *2
====================================================
新增 Z:\a5.txt 之後
dir a* 的結果(有檔案和資料夾)
PS Z:\> (dir a* -r -i *).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
Z:\a5.txt
PS Z:\> (dir a* -r -i *2).FullName
Z:\a1\a2
PS Z:\> (dir a* -r -i *2,3*).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
PS Z:\> (dir a* -r -i *2,3*, *5*).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
Z:\a5.txt
不使用 -r
PS Z:\> (dir a* -i *).FullName
Z:\a1\a2
Z:\a5.txt
Z:\a1沒列出
Z:\a1\a2 列出了
PS Z:\> (dir a* -i *2).FullName
PS Z:\>
沒反應,Z:\a1 不符合 -i *2
Z:\a5.txt 不符合 -i *2
PS Z:\> (dir a* -i *2,*1).FullName
Z:\a1\a2
Z:\a1 符合 a* 和 -i *1
a2符合 -i *2
PS Z:\> (dir a* -i *2, *1 , *5*).FullName
Z:\a1\a2
Z:\a5.txt
Z:\a1 符合 a* 和 -i *1
a2符合 -i *2
Z:\a5.txt符合 a* 和 -i *5*
=================================================
dir 3* 的結果(沒有東西)
PS Z:\> (dir 3* -r -i *).FullName
PS Z:\>
沒反應,Z:\3* 沒有找到東西
不使用 -r
PS Z:\> (dir 3* -i *).FullName
PS Z:\>
沒反應,Z:\3* 沒有找到東西
================================================
新增 Z:\3F.jpg 之後
dir 3* 的結果(只有檔案)
PS Z:\> (dir 3* -r -i *).FullName
Z:\3F.jpg
PS Z:\> (dir 3* -r -i *2).FullName
PS Z:\>
沒反應, 3F.jpg 不符合 *2
不使用 -r
PS Z:\> (dir 3* -i *).FullName
Z:\3F.jpg
PS Z:\> (dir 3* -i *2).FullName
PS Z:\>
沒反應, 3F.jpg 不符合 *2
================================================
有* 無* 的差別
PS Z:\> tree /f
列出資料夾 PATH
磁碟區序號為 00000078 5566:7788
Z:.
├─a1
│ └─a2
│ 3.txt
│
└─b1
└─b2
3.txt
PS Z:\> (dir * -r).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
Z:\b1\b2
Z:\b1\b2\3.txt
PS Z:\> (dir -r).FullName
Z:\a1
Z:\b1
Z:\a1\a2
Z:\a1\a2\3.txt
Z:\b1\b2
Z:\b1\b2\3.txt
PS Z:\> (dir * -r -i *).FullName
Z:\a1\a2
Z:\a1\a2\3.txt
Z:\b1\b2
Z:\b1\b2\3.txt
PS Z:\> (dir -r -i *).FullName
Z:\a1
Z:\a1\a2
Z:\a1\a2\3.txt
Z:\b1
Z:\b1\b2
Z:\b1\b2\3.txt
-path 沒有* 起始點不一樣
不使用 -r
PS Z:\> (dir * -i *).FullName
Z:\a1\a2
Z:\b1\b2
PS Z:\> (dir -i *).FullName
PS Z:\>
在根目錄 使用 -i (沒有 -r)
-path 需要 * 否則沒反應
-path 的檔名部份是空的
PS Z:\> (dir Z:\ -i *).FullName
PS Z:\>
在根目錄 使用 -i (沒有 -r)
-path 需要 * 否則沒反應
-path 的檔名部份是空的
PS Z:\> (dir Z:\a1 -i *).FullName
Z:\a1\a2
PS Z:\> cd Z:\a1
PS Z:\a1> (dir -i *).FullName
Z:\a1\a2
-path不需要 * -path的檔名部份 有 a1
PS Z:\> (dir Z:\a1\a2 -i *).FullName
Z:\a1\a2\3.txt
PS Z:\a1> cd Z:\a1\a2
PS Z:\a1\a2> (dir -i *).FullName
Z:\a1\a2\3.txt
-path 不需要 * -path的檔名部份 有 a2
PS Z:\a1\a2> (dir -i * -file).FullName
PS Z:\a1\a2>
沒反應, 「-path 為 Z:\a1\a2」 與 -file 不符合
PS Z:\a1\a2> (dir * -i * -file).FullName
Z:\a1\a2\3.txt
-path需要 * -path 為 Z:\a1\a2\*
PS Z:\> (dir Z:\a1\* -i *).FullName
Z:\a1\a2\3.txt
PS Z:\> (dir Z:\a1\a2\* -i *).FullName
Z:\a1\a2\3.txt
暈
===================================================
-include的用途
1.在某樹狀範圍進行過濾
dir -r -i *
2.在某些檔案裡(只有檔案、沒有資料夾)進行過濾 (搭配 -file)
dir Z:\a1\a2\* -i * -file
作者:
523066680
时间:
2016-11-26 08:36
台湾有个唐凤(原名唐汉宗),特别牛叉
欢迎光临 批处理之家 (http://bathome.net./)
Powered by Discuz! 7.2