gpt4 book ai didi

powershell - 如何在Powershell中存储引用变量以进行连续迭代

转载 作者:行者123 更新时间:2023-12-03 01:12:51 25 4
gpt4 key购买 nike

我正在寻找存储变量$i.Name$i.LastWriteTime的最佳方法,以便我可以继续将文件夹名称加载到.exe中,而无需重复进行操作。

可能类似于:

$LastFolderProcessed = "Stored LastWriteTime from last processing"
if ($i.LastWriteTime -gt $LastFolderProcessed } | `
Continue....

我编写了一个从Task Scheduler启动的脚本,以完成以下步骤:

1.)检查原始目录并将新项目(文件夹)复制到处理中
目录。

2.)遍历处理目录并找到每个项目

3.)将每个项目分配给变量$ i.Name

4.)定义CMD和Args。跑(&)。

脚本
Set-ExecutionPolicy unrestricted -Force

cpi C:\Apps\AutoTest\Analysis\2016\* C:\Apps\AutoTest\Loading -Recurse

foreach($i in Get-ChildItem C:\localApps\AutomationTest\Loading)
{

if ($i.PSisContainer) {$i.Name}

$CMD = 'C:\Program Files\Analysis\LoadProgram.exe'
$arg1 = "-database:Data Source=MSSQLSERVER"
$arg2 = "-directory:C:\Apps\AutomationTesting\Loading\$i"
$arg3 = "-config:C:\Program Files\Analysis\Configs\loadconfig.xml"

& $CMD $arg1 $arg2 $arg3
}

$i.LastWriteTime

该脚本运行我的.exe [带有Args],并将使用找到的每个文件夹名称加载 $i.name变量。如果目录中有5个文件夹名称,则它将为每次迭代运行.exe 5次。

该脚本将每天运行。

我正在寻找一种存储引用变量的好方法,这样,如果说在两天内,如果脚本启动并找到3个新的文件夹名称,它将只处理新的文件夹。

这是我一直认为最好的选择可能是使用 $i.LastWriteTime之类的地方

最佳答案

到目前为止,最简单的方法是使用Export-ClixmlImport-Clixml。这些cmdlet将对象序列化为XML文件,反之亦然。

因此,例如,如果您想存储整个文件列表:

$list = Get-ChildItem #...

$list | Export-Clixml -Path C:\my\path\MyFiles.xml

重新加载它,几乎是一样的:
$oldList = Import-Clixml -Path C:\my\path\MyFiles.xml

关于powershell - 如何在Powershell中存储引用变量以进行连续迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36363768/

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