gpt4 book ai didi

Powershell - 将字符串拆分为单独的组件

转载 作者:行者123 更新时间:2023-12-02 23:30:24 27 4
gpt4 key购买 nike

我正在编写一个脚本,它基本上会执行以下操作:

从文本文件中读取一些参数:

DriveLetter ThreeLetterCode ServerName VolumeLetter Integer

例如。 W MSS SERVER01 C 1
这些值恰好形成了一个文件夹目的地 W:\MSS\ , 和一个文件名,它适用于以下命名约定:
SERVERNAME_VOLUMELETTER_VOL-b00X-iYYY.spi - Where The X is the Integer above

值 Y 我需要稍后计算,因为这恰好是增量镜像(备份)的值,我需要计算最新的增量。

所以目前 --> 计算文件中的行数,并循环这么多行。
$lines = Get-Content -Path PostBackupCheck-Textfile.txt  | Measure-Object -Line
for ($i=0; $i -le $lines.Lines; $i++)

在这个循环中,我需要做一个 Get-Content 来读取我当前正在查看的行,即第 0 行、第 1 行、第 2 行,因为我在开头写的格式中会有多行并将该行拆分为一个数组,其中文件的每个部分,如上面的命名约定,在 a[0], a[1], a[2] 中。等

这样做的原因是,我需要对包含这些的文件夹进行排序,按日期找到最新的文件,然后取 _iXXX.spi部分并将其放入数组值 a[X]所以我有一个完整的文件名要挂载。此值将替换 iYYY.spi
这有点复杂,因为在按日期对所有内容进行排序之前,我还必须确保在使用 -Include 执行 Get-ChildItem 时,我只包含与从文本文件提供给它的参数匹配的文件名:

所以,
SERVER01_C_VOL-b001-iYYY.spi and not anything else. 
i.e. not SERVER01_D_VOL-b001-iYYY.spi

然后从 Get-ChildItem -Include 的排序中获取 iYYY 值并将其放入适当的数组项中。

我真的不知道从哪里开始,所以任何想法都值得赞赏!

希望我已经解释得足够详细。我也把代码放在 Pastebin 上: http://pastebin.com/vtFifTW6

最佳答案

这不需要那么复杂。您可以首先使用简单的管道对文件中的行进行操作:

Get-Content PostBackupCheck-Textfile.txt |
Foreach-Object {
$drive, $folder, $server, $volume, [int]$i = -split $_
...
}

循环内的行在空格处拆分当前输入行并分配适当的变量。这为您省去了在那里处理数组的麻烦。接下来的所有内容也需要在所述循环中。

然后,您可以构建文件名模式:
$filename = "$server_$drive_VOL-b$($i.ToString('000'))-i*.spi"

您可以使用它来查找所有拟合文件并按日期对其进行排序:
$lastFile = Get-ChildItem $filename | sort LastWriteTime | select -last 1

关于Powershell - 将字符串拆分为单独的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13442122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com