首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在PowerShell中执行'dir /s /b‘?

如何在PowerShell中执行'dir /s /b‘?
EN

Stack Overflow用户
提问于 2009-09-25 21:25:44
回答 6查看 101.3K关注 0票数 65

我有一个包含三个文件的文件夹,我想要与PowerShell中的dir /s /b等效的文件。我该怎么做?

例如,如果文件夹名为temp3,并且包含三个文本文件- a.txtb.txtc.txt,正在做

代码语言:javascript
复制
C:\temp3> dir /s /b

给了我

代码语言:javascript
复制
C:\temp3\a.txt
C:\temp3\b.txt
C:\temp3\c.txt

如何在PowerShell中获得相同的结果?

EN

回答 6

Stack Overflow用户

发布于 2016-09-13 05:47:02

如果您将Powershell用作shell (而不是脚本处理器),则只需键入:

代码语言:javascript
复制
cmd /r dir /s /b

/r标志告诉cmd.exe运行命令并退出。换句话说,您将在相同的执行上下文中结束。

对于许多命令,cmd /r比处理Powershell面向对象体系结构更好。

票数 52
EN

Stack Overflow用户

发布于 2009-09-25 21:29:57

您可以使用

代码语言:javascript
复制
Get-ChildItem -Recurse | Select-Object -ExpandProperty FullName
gci -r | select -exp FullName

代码语言:javascript
复制
Get-ChildItem -Recurse | ForEach-Object { $_.FullName }
gci -r | % { $_.FullName }
gci -r | % FullName    # In recent PowerShell versions

(长版本是第一个,使用别名和短参数名缩短的版本是第二个,如果不明显的话。在脚本中,我建议总是使用长版本,因为它在某些地方冲突的可能性要小得多。)

重新阅读您的问题,如果您希望使用dir /s /b完成的所有操作是输出当前目录中文件的完整路径,那么您可以在此处删除-Recurse参数。

不过,我给您的建议是:如果可以的话,不要使用字符串。如果您想传递文件,那么只需获取从Get-ChildItem获得的FileInfo对象。cmdlets知道如何处理它。在对象工作得更好的情况下使用字符串只会让你陷入奇怪的问题。

票数 42
EN

Stack Overflow用户

发布于 2015-09-14 13:30:40

补充到乔伊的答案上。从PowerShell 3.0开始,您可以使用新的Foreach-Object简写来获取FullName属性。

代码语言:javascript
复制
Get-ChildItem -Recurse | Foreach-Object FullName
gci -r |% FullName

不同之处在于,如果只需要一个属性,则不需要使用大括号({})或$_变量。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1479663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档