Удалить символы из строки внутри для - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь определить местоположение папки вируса, удалив последние 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 для подстроки некорректно обрезает строку, некоторые идеи о том, почему не работает ни один из этих примеров кода

$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

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Как указано в комментариях @JohnLBevan, вы можете использовать команду Split-Path с переключателем -Parent:

MWE

$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
0 голосов
/ 11 октября 2018

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($_)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...