PowerShell的dir命令

测试于 PowerShell 5.1

dir 档案 vs dir 资料夹

dir 档案 → 得到档案
dir 资料夹 → 不是得到资料夹
       而是得到资料夹里的档案和子资料夹

如果要得到资料夹本身,可以使用get-item

#得到档案PS R:\> (dir C:\Pic\1.jpg).FullNameC:\Pic\1.jpg#得到资料夹里的档案和子资料夹PS R:\> (dir C:\Pic\新增资料夹).FullNameC:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹\1.jpgC:\Pic\新增资料夹\2.jpg#使用get-itemPS R:\> (gi C:\Pic\新增资料夹).FullNameC:\Pic\新增资料夹

使用 -Recurse 参数,起始层的不同

没有使用 -r

#起始层:C:\Pic#寻找:新*PS R:\> (dir C:\Pic\新*).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002#新增「C:\Pic\新文字文件.txt」之后:#起始层:C:\Pic#寻找:新*PS R:\> (dir C:\Pic\新*).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002C:\Pic\新文字文件.txt

没有特别之处

有使用 -r

C:\Pic 和 C:\Pic\* 的差别

#C:\Pic里面的情形PS R:\> (dir C:\Pic).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002#起始层:C:\Pic#寻找:全部PS R:\> (dir C:\Pic -r).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002C:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹\1.jpgC:\Pic\新增资料夹\2.jpgC:\Pic\新增资料夹002\11.jpgC:\Pic\新增资料夹002\12.jpg#起始层:「C:\Pic\新增资料夹」、「C:\Pic\新增资料夹002」#      (起始层「资料夹」没有列出)#寻找:全部PS R:\> (dir C:\Pic\* -r).FullNameC:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹\1.jpgC:\Pic\新增资料夹\2.jpgC:\Pic\新增资料夹002\11.jpgC:\Pic\新增资料夹002\12.jpg#新增「C:\Pic\1.jpg」之后:PS R:\> (dir C:\Pic).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002C:\Pic\1.jpg#起始层:C:\Pic#寻找:全部PS R:\> (dir C:\Pic -r).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002C:\Pic\1.jpgC:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹\1.jpgC:\Pic\新增资料夹\2.jpgC:\Pic\新增资料夹002\11.jpgC:\Pic\新增资料夹002\12.jpg#起始层:C:\Pic#寻找:全部PS R:\> (dir C:\Pic\* -r).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002C:\Pic\1.jpgC:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹\1.jpgC:\Pic\新增资料夹\2.jpgC:\Pic\新增资料夹002\11.jpgC:\Pic\新增资料夹002\12.jpg

当使用 -r 参数
dir C:\Pic 的起始层:
  都是:C:\Pic

dir C:\Pic\*的起始层:
  C:\Pic\*全部都是资料夹:「新增资料夹」、「新增资料夹002」
  以外情形:C:\Pic

还有

#C:\Pic里面的情形PS R:\> (dir C:\Pic).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002C:\Pic\1.jpg#起始层:「新增资料夹」、「新增资料夹002」#      (起始层「资料夹」没有列出)#寻找:全部PS R:\> (dir C:\Pic\新* -r).FullNameC:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹\1.jpgC:\Pic\新增资料夹\2.jpgC:\Pic\新增资料夹002\11.jpgC:\Pic\新增资料夹002\12.jpg#新增「C:\Pic\新文字文件.txt」之后:#起始层:C:\Pic#寻找:新*PS R:\> (dir C:\Pic\新* -r).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹002C:\Pic\新文字文件.txt

当使用 -r 参数
C:\Pic\新* 全部都是资料夹:
  起始层:「新增资料夹」、「新增资料夹002」
  寻找:全部

以外情形:
  起始层:C:\Pic
  寻找:新*


-Recurse参数 搭配 -Include参数

#C:\Pic里面的情形PS R:\> (dir C:\Pic).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002C:\Pic\1.jpg#起始层:C:\Pic#寻找:*PS R:\> (dir C:\Pic -r -i *).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹\1.jpgC:\Pic\新增资料夹\2.jpgC:\Pic\新增资料夹002C:\Pic\新增资料夹002\11.jpgC:\Pic\新增资料夹002\12.jpgC:\Pic\1.jpg#起始层:「新增资料夹」、「新增资料夹002」、「1.jpg」#      (起始层「资料夹」没有列出)#寻找:*PS R:\> (dir C:\Pic\* -r -i *).FullNameC:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹\1.jpgC:\Pic\新增资料夹\2.jpgC:\Pic\新增资料夹002\11.jpgC:\Pic\新增资料夹002\12.jpgC:\Pic\1.jpg#起始层:「新增资料夹」、「新增资料夹002」#      (起始层「资料夹」没有列出)#寻找:1*#没有列出 C:\Pic\1.jpgPS R:\> (dir C:\Pic\新* -r -i 1*).FullNameC:\Pic\新增资料夹\1.jpgC:\Pic\新增资料夹002\11.jpgC:\Pic\新增资料夹002\12.jpg#新增「新文字文件.txt」之后PS R:\> (dir C:\Pic).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002C:\Pic\1.jpgC:\Pic\新文字文件.txt#起始层:「新增资料夹」、「新增资料夹002」、「新文字文件.txt」#      (起始层「资料夹」没有列出)#寻找:1*#结果:和新增「新文字文件.txt」之前一样PS R:\> (dir C:\Pic\新* -r -i 1*).FullNameC:\Pic\新增资料夹\1.jpgC:\Pic\新增资料夹002\11.jpgC:\Pic\新增资料夹002\12.jpg

只要有指定 -Include参数,
起始层就是 C:\Pic\新*
不会像只使用-r参数时那样,有两种情形


-Recurse参数 搭配 -Exclude参数

#C:\Pic里面的情形PS R:\> (dir C:\Pic).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002C:\Pic\1.jpg#用 -ex 过滤之前#起始层:「新增资料夹」、「新增资料夹002」#      (起始层「资料夹」没有列出)#寻找:全部PS R:\> (dir C:\Pic\新* -r).FullNameC:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹\1.jpgC:\Pic\新增资料夹\2.jpgC:\Pic\新增资料夹002\11.jpgC:\Pic\新增资料夹002\12.jpg#用 -ex 过滤之后PS R:\> (dir C:\Pic\新* -r -ex 1*).FullNameC:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹\2.jpg#新增「新文字文件.txt」之后PS R:\> (dir C:\Pic).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002C:\Pic\1.jpgC:\Pic\新文字文件.txt#用 -ex 过滤之前#起始层:C:\Pic#寻找:新*PS R:\> (dir C:\Pic\新* -r).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹002C:\Pic\新文字文件.txt#用 -ex 过滤#起始层:C:\Pic#寻找:新*#不会影响起始层PS R:\> (dir C:\Pic\新* -r -ex 1*).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹002C:\Pic\新文字文件.txt

-Exclude参数:
  纯过滤
  不会影响起始层

-Include参数 -Exclude参数的使用注意事项

最好只搭配 -Recurse参数 使用

不搭配 -Recurse参数的情形

PS R:\> (dir C:\Pic).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002C:\Pic\1.jpgC:\Pic\新文字文件.txt#不搭配 -r 的时候,会难以理解#第一个命令没反应,因为C:\Pic 资料夹名称不是 新*#-Include检查名称有两处:#       「资料夹」、「资料夹里的东西」#检查成功,传回「资料夹里的东西」PS R:\> (dir C:\Pic -Include 新*).FullNamePS R:\> (dir C:\Pic\* -Include 新*).FullNameC:\Pic\新增资料夹\新_子资料夹C:\Pic\新文字文件.txt#不搭配 -r 的时候,会难以理解#它没有列出C:\Pic\新增资料夹\1.jpg#因为「新增资料夹」不符合 1*PS R:\> (dir C:\Pic -Include 1*).FullNamePS R:\> (dir C:\Pic\* -Include 1*).FullNameC:\Pic\1.jpgPS R:\> (dir C:\Pic -ex *.txt).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002C:\Pic\1.jpgPS R:\> (dir C:\Pic\* -ex *.txt).FullNameC:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹\1.jpgC:\Pic\新增资料夹\2.jpgC:\Pic\新增资料夹002\11.jpgC:\Pic\新增资料夹002\12.jpgC:\Pic\1.jpgPS R:\> (dir C:\Pic -ex p*).FullNamePS R:\> (dir C:\Pic\* -ex p*).FullNameC:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹\1.jpgC:\Pic\新增资料夹\2.jpgC:\Pic\新增资料夹002\11.jpgC:\Pic\新增资料夹002\12.jpgC:\Pic\1.jpgC:\Pic\新文字文件.txt

在根目录使用,也有问题
问题很多,不如跳过


-Depth参数

PS R:\> (dir C:\Pic -r -depth 0  ).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹002C:\Pic\1.jpgC:\Pic\新文字文件.txt#加了 -i参数,就坏了PS R:\> (dir C:\Pic -r -depth 0  -i *).FullNameC:\Pic\新增资料夹C:\Pic\新增资料夹\新_子资料夹C:\Pic\新增资料夹\1.jpgC:\Pic\新增资料夹\2.jpgC:\Pic\新增资料夹002C:\Pic\新增资料夹002\11.jpgC:\Pic\新增资料夹002\12.jpgC:\Pic\1.jpgC:\Pic\新文字文件.txt

-Filter参数 与-Include参数的比较

万用字元:
  -Filter:
    *?
    cmd style

  -Include:
    *?[]
    PowerShell style

过滤条件有几个:
  -Filter:1个
    例如:dir -filter a*

  -Include:多个
    例如:dir -r -in a*,b*,c*


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章