2016-12-15 61 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("_")