Я пытаюсь проанализировать множество файлов .txt в определенный c формат, который мне понадобится.
Цель кода:
- удалить 39 верхних строк текста
- удалить 6 нижних строк.
- удалить первые 53 символа в начале каждой строки
- перед именем файла добавляется каждая строка.
Это мой код:
$targetDir = "E:\home\export\"
$indexDir = "E:\index\"
Get-ChildItem -Path "$indexDir\*" -Include *.txt -Recurse | % {
$file = $_
$name = $file | Select -exp BaseName
get-content $file | select -Skip 39 | select -SkipLast 6 | ForEach-Object {
$_ = $name + "\" + $_.Remove(53, $_.Length)
}| set-content $file+"temp"
move $file+"temp" $file -Force
}
Функция Remove выдает следующее исключение:
Exception calling "Remove" with "2" argument(s): "Index and count must refer to a location within the string. Parameter name: count"
At E:\create_index_stap2.ps1:9 char:9
+ $_ = $name + "\" + $_.Remove(53, $_.Length)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ArgumentOutOfRangeException
Текстовые файлы выглядят так:
**********************
Windows PowerShell transcript start
Start time: 20200324111411
Username: MYPC\xorinzor
RunAs User: MYPC\xorinzor
Configuration Name:
Machine: MYPC (Microsoft Windows NT 10.0.17763.0)
Host Application: C:\Windows\System32\WindowsPowerShell\v1.0\powershell_ise.exe
Process ID: 18468
PSVersion: 5.1.17763.1007
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.17763.1007
BuildVersion: 10.0.17763.1007
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Transcript started, output file is E:\index\filename.7z.txt
7-Zip 19.00 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2019-02-21
Scanning the drive for archives:
1 file, 29931544 bytes (29 MiB)
Listing archive: E:\home\export\filename.7z
--
Path = E:\home\export\filename.7z
Type = 7z
Physical Size = 29931544
Headers Size = 2281
Method = LZMA2:24
Solid = +
Blocks = 1
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2018-03-17 11:14:44 D.... 0 0 Contacts
2018-03-17 13:38:06 D.... 0 0 Desktop
2018-03-17 13:22:04 D.... 0 0 Documents
2018-02-06 14:14:28 D.... 0 0 Documents\Some directory
------------------- ----- ------------ ------------ ------------------------
2018-12-16 07:36:34 43367240 29929263 79 files, 37 folders
**********************
Windows PowerShell transcript end
End time: 20200324111411
**********************
В основном, если текстовый файл в этом случае называется "filename.7z.txt", я хочу получить следующее содержимое файла:
filename.7z\Contacts
filename.7z\Desktop
filename.7z\Documents
filename.7z\Documents\Some directory
Почему мой код вызывает исключение