Powershell被'_'分割返回空

use*_*033 0 powershell

所以我有几个文件的文件夹:

$files = @(Get-ChildItem "myPath")
Run Code Online (Sandbox Code Playgroud)

我可以通过$files包含几个项目的调试器看到,我想拿第一个:

$files[0] = "123_this.is.string"
Run Code Online (Sandbox Code Playgroud)

我想分裂'_'并带走123

$splitted = $files[0] -split "_"
Run Code Online (Sandbox Code Playgroud)

所以在这里我可以看到它$splitted是空的。

任何建议为什么这种奇怪的行为?

Boe*_*dal 6

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

$files[0].getType()

IsPublic IsSerial Name                                     BaseType                                                                                                                           
-------- -------- ----                                     --------                                                                                                                           
True     True     FileInfo                                 System.IO.FileSystemInfo
Run Code Online (Sandbox Code Playgroud)

所以为了让它工作,你必须使用 split 函数到文件的文件名,它是一个字符串。

$files[0].name.getType()

IsPublic IsSerial Name                                     BaseType                                                                                                                           
-------- -------- ----                                     --------                                                                                                                           
True     True     String                                 System.Object
Run Code Online (Sandbox Code Playgroud)

有了这个它应该工作:

$files[0].name.split("_")
Run Code Online (Sandbox Code Playgroud)