2016-12-15 74 views
0

所以我有文件夾的幾個文件:PowerShell的分裂由「_」返回空

$files = @(Get-ChildItem "myPath") 

我可以通過該$files包含幾個項目的調試器看到和我想拿第一:

$files[0] = "123_this.is.string" 

,我想通過'_'將拆分,並採取123

$splitted = $files[0] -split "_" 

所以在這裏我可以看到$splitted是空的。

任何建議爲什麼這種奇怪的行爲?

+0

這個工作對我很好,請提供一個最小的可驗證例如 – 4c74356b41

+4

我相信,你應該使用'Name'物業價值分拆。你的'$ file [0]'應該包含一個包含一堆屬性的對象,並且你不能分割對象。試試'$ files [0] .Name -Split'_''。 – n01d

+0

'$ files [0] -split「_」'和'$ files [0] .Name -split「_」'應該給出相同的結果。 –

回答

4

$ files [0]不是字符串而是FileSystemInfo對象。

$files[0].getType() 

IsPublic IsSerial Name          BaseType                               
-------- -------- ----          --------                               
True  True  FileInfo         System.IO.FileSystemInfo 

所以要得到它的工作,你必須使用分割函數來文件的文件名是一個字符串。

$files[0].name.getType() 

IsPublic IsSerial Name          BaseType                               
-------- -------- ----          --------                               
True  True  String         System.Object 

有了這個它應該工作:

$files[0].name.split("_") 
1

嘗試:

$files[0].ToString().split("_")