2013-08-12 19 views
8

Dizeler dizisi olarak işlenecek yolların listesini kabul eden bir komut dosyası var. Bu yolları oluşturmak için Get-ChildItem kullanıyorum. System.IO.FileInfo nesnesinden dizelere dönüşümdeki bazı ilginç davranışlara rastladım.Get-ChildItem çıktısını string'e dönüştürme []

Örnek 1:

PS C:\Users\Nikhil\Documents> [string[]](Get-ChildItem .\GitHub\) 
toc 
toc-gh-pages 
Publish gh-pages.txt 

Örnek 2:

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 

Örnek 3:

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 
... 

Örnek (-Recurse ile şeritlerine dönüşüm mantıksız ve yararsız yani) 4:

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 
... 

Yol için joker karakter eklenmesi, sonuç dizelerinin yalnızca dosya/klasör adları yerine tam yol adları olmasına neden olur. Bu neden oluyor?

'u nasıl anlıyorum Bu davranışa bir çözüm bulabilir ve ihtiyacım olan bilgileri alabilirim; İlgilendiğim şey, neden neden oluyor? Bu, her durumda yalnızca System.IO.FileInfo ve System.IO.DirectoryInfo nesnelerini dizelere dönüştürdüğümüze göre.

+3

: http://stackoverflow.com/a/2744637/520612 –

+0

@ CB Bunun için teşekkürler - tam olarak aradığım cevap budur. Birisi bana bu sorunun bir kopyası olarak işaretlemede yardımcı olabilir mi? –

+0

olası yinelenen [Gizemli farklı dönüşüm dizgeye \ [\] görünüşte aynı giriş verileri) (http://stackoverflow.com/questions/2744047/mysterious-different-conversion-to-string-of-seemingly-same-input -data) –

cevap

6

Mantıksal cevap:

Sen dizelerine FileInfo nesneleri döküm vardır. gci path'u yaptığınızda, yalnızca bu klasörden dosya ve dizinleriniz olur. Yani sadece öğenin adına dönüştürmek için tamam.

gci path\*'u kullanırken, bu klasörlerin karşısındadır ve yalnızca adlara dönüştürme geçerli değildir, bu nedenle yolu içerir.

adını veya tam yol isteyip bağlı olarak, bu yapın:

gci $path | select -expand Name 

veya

gci $path | select -expand FullName 
burada oku
+0

Mantıklı görünebilir, ancak -Recurse anahtarını eklediğimde aynı şey olur. Yani bu durumda çıktı tamamen işe yaramaz - sadece bir dizi isim içermeyen dosya isimleri. –

+0

Sorunu bazı Recurse örnekleriyle güncelledim. –