Powershell - 错误,但有时仅

时间:2015-11-25 13:28:47

标签: powershell recursion conditional-statements

我在这里遇到了麻烦。 newPath是函数analyse的参数,在此处写入。我的情况有问题......

目标是在.txt中写入每个地址(如果它还没有),并且mSize(来自工作函数的结果)是否大于seuil(阈值)。 “seuil”在这里等于0。我正在匹配文件夹中的代码,并且分析了此文件夹之后的每个文件夹。

问题是,它工作正常......仅限2个地址。 我不明白,当我启动代码时,只写了两行。通过测试,我认为“结果”实际上取空值,我不知道何时以及为什么。

$result = get-content -Path O:\folder\public\F*******\parcoursArborescence\logs.txt

$test = "start"
$test
cd $newPath
$newPath
$result

$dirSize = [math]::round($(getDirSize)/1048576, 2)
$mSize = [math]::round($(multimediaSize), 2)

if (($result -match [regex]::Escape($newPath + ";") -eq $FALSE)) {
    $testR = $false
}
if (($result -match [regex]::Escape($newPath + ";") -eq $TRUE)) {
    $testR = $true
}

$mSize
$testR



if ($mSize -gt $seuil -and $testR -eq $FALSE) {
    $dataWriting = "writing..."
    $dataWriting
    $data = $newPath + ";" + $dirSize + ";" + $mSize + ";" + $(mmPercent) + ";" +  $(getLastWriting) + ";" + $(getLastAccess)
    $data | out-file -append O:\folder\public\F*******\parcoursArborescence\logs.txt -Encoding ASCII
}
dir |
foreach-object {
    if ($_.PsISContainer -eq $True -and $result -notMatch [regex]::escape($_.fullname + ";")) { 
        $oldPath = $newPath     
        $newPath = $_.fullname  
        analyse $newPath        
    }
    else {
        $oldPath = cd ..\ | get-location
        $newPath = $oldPath
    }
 }

以下是我的文本文件的一些行:

O:\folder\public\DataIntegrator;1030.95;812.7;79;08/13/2013 13:28:49;11/25/2015 09:47:28
O:\folder\public\DataIntegrator\package;988.99;810.93;82;08/13/2013 13:28:49;11/25/2015 09:47:28

我的工作是对不同类型的文件进行分类。我希望文本文件中充满了引导重文件夹的地址(其中长度为<“seuil”)。我正在处理的条件不应该允许再次写入.txt中的地址。这两条线是唯一在atm工作的线;在此之后,没有写入地址。我试着在这里和那里放一些测试值;重要的一个(我猜)是“testR”之一。一开始,它起作用并说它的值是真还是假。但是,我不知道为什么以及什么时候开始说什么都没有,让我猜它得到一个空值。

newPath的例子:0:\ folder \ public \ DataIntegrator - >分析DataIntegrator

编辑:我稍微修改了一下代码。这里是 : http://pastebin.com/zKaK2ZWX

对于这个问题,唯一重要的是42首先。即使有这些条件,testR也不会改变并保持错误。它永远不会确认其他两个条件之一。如果我将testR切换为true,那么它将保持正确。

1 个答案:

答案 0 :(得分:0)

好的,我想我明白了。

我对-match条件进行了越来越多的测试。看起来输出不是布尔值,而是字符串;它向我发送包含字符串$result的{​​{1}}行,因此结果永远不会为false或true。

但是我有一个新问题。如何从中获取布尔值?我需要知道$testPath是否包含$result