批处理或PowerShell:如何从字符串中获取最后一个单词?

Roo*_*oop 3 string powershell batch-file powershell-2.0 batch-processing

这是我的场景:

我有一个包含很多行的文本文件.每一行都是文件夹的路径.

示例:000.txt

 C:\Program Files (x86)\Microsoft Office\Office15
 C:\Program Files (x86)\Common Files\Adobe\Acrobat
 C:\Program Files (x86)\Common Files\Blizzard Entertainment
Run Code Online (Sandbox Code Playgroud)

我需要找到一种方法来获取每行的最后一个子文件夹的名称,并使用它来创建文件夹链接:

d:\>mklink /j office15 "C:\Program Files (x86)\Microsoft Office\Office15"
d:\>mklink /j acrobat "C:\Program Files (x86)\Common Files\Adobe\Acrobat"
d:\>mklink /j "Blizzard Entertainment" "C:\Program Files (x86)\Common Files\Blizzard Entertainment"
Run Code Online (Sandbox Code Playgroud)

我试过这个:

$a="C:\Program Files (x86)\Microsoft Office\Office15"
$a.Split()[-1]
Run Code Online (Sandbox Code Playgroud)

结果如下:

Office\Office15
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

$a.Split("`t",[System.StringSplitOptions]::RemoveEmptyEntries)[-1]
Run Code Online (Sandbox Code Playgroud)

结果是:

5
Run Code Online (Sandbox Code Playgroud)

如何\使用Batch或PowerShell 获取最后一行或每个单词的最后一个单词?

Dun*_*can 7

我假设这些文件夹都已存在,如果是这样,有一种完全不同的方式可以考虑:

Get-Content "000.txt" | Get-Item | foreach-object {
    cmd /c mklink /J $_.Name $_.FullName
}
Run Code Online (Sandbox Code Playgroud)

因此,对于每个文件夹名称,您将获得与该文件夹关联的DirectoryInfo对象.然后,您可以直接从Name属性中提取路径的最后部分.

这也有一个好处,如果在尝试链接到目标文件夹之前不存在任何目标文件夹,则会收到错误.


Col*_*350 6

你很接近,但是忘了指定你要拆分字符串的字符,所以它默认为空格:

 $a="C:\Program Files (x86)\Microsoft Office\Office15"
 $a.Split('\')[-1]
Run Code Online (Sandbox Code Playgroud)