首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Get-ChildItem输出转换为string[]

将Get-ChildItem输出转换为string[]
EN

Stack Overflow用户
提问于 2013-08-12 12:20:24
回答 1查看 19K关注 0票数 14

我有一个脚本,它接受作为字符串数组处理的路径列表。我使用Get-ChildItem生成这些路径。在从System.IO.FileInfo对象到字符串的转换过程中,我遇到了一些有趣的行为。

示例1:

代码语言:javascript
复制
PS C:\Users\Nikhil\Documents> [string[]](Get-ChildItem .\GitHub\)
toc
toc-gh-pages
Publish gh-pages.txt

示例2:

代码语言:javascript
复制
PS C:\Users\Nikhil\Documents> [string[]](Get-ChildItem .\GitHub\*)
C:\Users\Nikhil\Documents\GitHub\toc
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages
C:\Users\Nikhil\Documents\GitHub\Publish gh-pages.txt

示例3:(使用-Recurse,因此对字符串的转换是不逻辑的和无用的)

代码语言:javascript
复制
PS C:\Users\Nikhil\Documents\GitHub> [string[]](Get-ChildItem .\toc-gh-pages -Recurse)
assets
css
lib
_layouts
_site
.gitattributes
.gitignore
index.html
_config.yml
jquery.toc.zip
docs.less
docs.min.css
google-code-prettify
jquery.toc
lang-apollo.js
...

例4:

代码语言:javascript
复制
PS C:\Users\Nikhil\Documents\GitHub> [string[]](Get-ChildItem .\toc-gh-pages\*.* -Recurse)
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages\assets\jquery.toc.zip
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages\css\docs.less
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages\css\docs.min.css
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages\lib\google-code-prettify\lang-apollo.js
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages\lib\google-code-prettify\lang-basic.js
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages\lib\google-code-prettify\lang-clj.js
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages\lib\google-code-prettify\lang-css.js
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages\lib\google-code-prettify\lang-dart.js
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages\lib\google-code-prettify\lang-erlang.js
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages\lib\google-code-prettify\lang-go.js
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages\lib\google-code-prettify\lang-hs.js
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages\lib\google-code-prettify\lang-lisp.js
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages\lib\google-code-prettify\lang-llvm.js
C:\Users\Nikhil\Documents\GitHub\toc-gh-pages\lib\google-code-prettify\lang-lua.js
...

在路径中添加通配符将导致产生的字符串为完整的路径名称,而不仅仅是文件/文件夹名称。这一切为什么要发生?

我理解如何绕过这种行为并获得我需要的信息;我感兴趣的是为什么会发生这种情况,因为我们在所有情况下都只是将System.IO.FileInfoSystem.IO.DirectoryInfo对象转换成字符串。

EN

回答 1

Stack Overflow用户

发布于 2013-08-12 12:29:21

逻辑答案:

您正在将FileInfo对象转换为字符串。当您执行gci path时,您只有该文件夹中的文件和目录。因此,只要转换为项目的名称就可以了。

当您使用gci path\*时,它是跨文件夹的,仅转换为名称是无效的,因此它包含路径。

根据您想要的名称还是完整的路径,执行以下操作:

代码语言:javascript
复制
gci $path | select -expand Name

代码语言:javascript
复制
gci $path | select -expand FullName
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18186841

复制
相关文章

相似问题

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