我正在尝试通过删除最后25个字符来获取病毒的文件夹位置,我发现可以使用我已经测试过且可以正常工作的代码来实现此目的
$string = "the scripts"
$string = $string.Substring(0,$string.Length-1)
$string
示例字符串
C:\Users\jose\Desktop\MUSICA\011_Leyendas\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe C:\Users\jose\Desktop\MUSICA\70'S, 80'S & 90'S.english\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe C:\Users\jose\Desktop\MUSICA\90\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe C:\Users\jose\Desktop\MUSICA\AlbertoBarro\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe C:\Users\jose\Desktop\MUSICA\BACHATA\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe C:\Users\jose\Desktop\MUSICA\CHICO CHE MEZCLADO\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe C:\Users\jose\Desktop\MUSICA\joan sebastian - M. A. Solís\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe C:\Users\jose\Desktop\MUSICA\JUAN GABRIEL 1 DUOS\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe
虽然尝试在FOR substring方法中执行该操作无法正确剪切字符串,但有些想法为何无法使用这些示例代码
$viruslocation = Get-Content -Path .\Desktop\virus.txt
for ($i = 1; $i -lt $viruslocation.Count; $i++) {
$Length =$viruslocation[$i]
$tem= $Length.Substring(0,$Length.Length-22)
write $tem
}
for ($i = 1; $i -lt $viruslocation.Count; $i++) {
$tem= $viruslocation[$i].Substring(0,$viruslocation[$i].Length-22)
write $tem
}
预期结果
C:\Users\jose\Desktop\MUSICA\011_Leyendas\nlwdvakybapcybqkvcfwr
答案 0 :(得分:5)
GetDirectoryName
是您要寻找的:
$virusLocations = 'C:\Users\jose\Desktop\MUSICA\011_Leyendas\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe',
'C:\Users\jose\Desktop\MUSICA\70''S, 80''S & 90''S.english\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe',
'C:\Users\jose\Desktop\MUSICA\90\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe',
'C:\Users\jose\Desktop\MUSICA\AlbertoBarro\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe',
'C:\Users\jose\Desktop\MUSICA\BACHATA\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe',
'C:\Users\jose\Desktop\MUSICA\CHICO CHE MEZCLADO\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe',
'C:\Users\jose\Desktop\MUSICA\joan sebastian - M. A. Solís\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe',
'C:\Users\jose\Desktop\MUSICA\JUAN GABRIEL 1 DUOS\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe'
$virusLocations | % {
[System.IO.Path]::GetDirectoryName($_)
}
答案 1 :(得分:0)
如@JohnLBevan的评论所述,您可以将Split-Path
命令与-Parent
开关一起使用:
$VirusLocations = @(
'C:\Users\jose\Desktop\MUSICA\011_Leyendas\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe',
'C:\Users\jose\Desktop\MUSICA\70''S, 80''S & 90''S.english\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe',
'C:\Users\jose\Desktop\MUSICA\90\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe',
'C:\Users\jose\Desktop\MUSICA\AlbertoBarro\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe',
'C:\Users\jose\Desktop\MUSICA\BACHATA\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe',
'C:\Users\jose\Desktop\MUSICA\CHICO CHE MEZCLADO\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe',
'C:\Users\jose\Desktop\MUSICA\joan sebastian - M. A. Solís\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe',
'C:\Users\jose\Desktop\MUSICA\JUAN GABRIEL 1 DUOS\nlwdvakybapcybqkvcfwr\nlwdvakybapcybqkvcfwr.exe'
)
foreach ($Virus in $VirusLocations) {
Split-Path -Path $Virus -Parent
}
C:\Users\jose\Desktop\MUSICA\011_Leyendas\nlwdvakybapcybqkvcfwr
C:\Users\jose\Desktop\MUSICA\70'S, 80'S & 90'S.english\nlwdvakybapcybqkvcfwr
C:\Users\jose\Desktop\MUSICA\90\nlwdvakybapcybqkvcfwr
C:\Users\jose\Desktop\MUSICA\AlbertoBarro\nlwdvakybapcybqkvcfwr
C:\Users\jose\Desktop\MUSICA\BACHATA\nlwdvakybapcybqkvcfwr
C:\Users\jose\Desktop\MUSICA\CHICO CHE MEZCLADO\nlwdvakybapcybqkvcfwr
C:\Users\jose\Desktop\MUSICA\joan sebastian - M. A. SolA-s\nlwdvakybapcybqkvcfwr
C:\Users\jose\Desktop\MUSICA\JUAN GABRIEL 1 DUOS\nlwdvakybapcybqkvcfwr