У меня есть список имен файлов, которые я должен разделить определенным образом. Самый простой способ, который я знаю, - это использовать для них Substring.
Имена файлов форматируются как; VLAN_ [Случайное имя] _ [Случайное число] .ini
Так что я предположил, что использовал Substring для получения имени файла с 5-го по 4-е последнее положение
$FileList = Get-ChildItem -Path $FileDir | Where-Object -Property name -like "VLAN_*"
ForEach($File in $FileList){
[String]$SheetName = $File.Name # Name Formatted like: VLAN_[Random Name]_[Random Number].ini
$SheetName = $SheetName.Substring(5,$Sheetname.Length-4)
Write-Host $File.Name
Write-Host $SheetName
Read-Host
}
Когда я пытался с это вернуло мне сообщение об ошибке «Индекс не в длине строки», но когда я использовал 4 или менее в качестве начальной точки для моей подстроки, это сработало. Это как-то связано с символом "_"? Кроме того, когда я начинаю с 0, последние 4 символа удаляются, как они должны, но если отправная точка не равна 0, она никогда не удаляет последние 4 символа.
Вот результат, который я получаю с обоими Методы подстроки:
# Substring(5,$Sheetname.Length-4)
"Index is not in String length" Error
VLAN_BMA_201.ini
VLAN_BMA_201.ini
"Index is not in String length" Error
VLAN_CCTV_120.ini
VLAN_CCTV_120.ini
# Substring(4,$Sheetname.Length-4)
VLAN_BMA_201.ini
_BMA_201.ini
VLAN_CCTV_120.ini
_CCTV_120.ini