Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell-错误,但有时仅限于_Powershell_Recursion_Conditional Statements - Fatal编程技术网

Powershell-错误,但有时仅限于

Powershell-错误,但有时仅限于,powershell,recursion,conditional-statements,Powershell,Recursion,Conditional Statements,我有麻烦了newPath是函数analysis的一个参数,函数写在这里。我的身体状况有问题 目标是在.txt中写入每个地址,如果它还不存在并且mSize(由工作函数产生)大于seuil(阈值)。这里“seuil”等于0。我在一个文件夹中匹配代码,然后对每个文件夹进行分析 问题是,它工作得很好。。。仅适用于2个地址。 我不明白,当我启动代码时,只写了两行。对于测试,我认为“result”实际上接受空值,我不知道什么时候以及为什么 $result = get-content -Path O:\fol

我有麻烦了
newPath
是函数
analysis
的一个参数,函数写在这里。我的身体状况有问题

目标是在.txt中写入每个地址,如果它还不存在并且
mSize
(由工作函数产生)大于
seuil
(阈值)。这里“seuil”等于0。我在一个文件夹中匹配代码,然后对每个文件夹进行分析

问题是,它工作得很好。。。仅适用于2个地址。 我不明白,当我启动代码时,只写了两行。对于测试,我认为“result”实际上接受空值,我不知道什么时候以及为什么

$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 ->分析数据积分器

编辑:我稍微修改了代码。这是:


对于这个问题,唯一重要的一行是前42行。即使有所有这些条件,testR也不会改变,并且保持为false。它从不确认其他两个条件之一。如果我将testR切换为true,那么它将保持true。

好的,我想我明白了

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


但是我有一个新问题。我怎样才能从中得到布尔值呢?我需要知道
$result
是否包含
$testPath

您能否显示$newpath和文本文件logs.txt的示例?什么工作很好。。。对于2个地址,只意味着什么?我认为你的if语句的逻辑是有缺陷的,但我真的不清楚这里发生了什么,所以可能没问题。如果我们无法复制问题,您将使我们很难进行故障排除。我并不是说答案可能不会在公众面前出现,但你让问题变得更加困难,因为我们必须在这里做出一些假设。请看一看对不起,我很难用英语写很多东西,因为我是法国人。我将对其进行编辑以提供更多细节。我使用PS2版本在PasteBin上发布前20行左右的内容,并提供链接,或者将其放在这里。在编写代码的方式上,您偏离了许多PowerShell最佳实践,这使您很难遵循(但我们会帮助您修复!)。给我看看你的输入文件,我会帮你弄明白的。我稍微修改了代码。现在,在这些测试中,如果我告诉testR为False,然后尝试用条件更改它的值,它不会。它只是保持虚假。剩下的代码没有用,唯一的问题是这个条件(我想)我真的不明白如何工作匹配。但是在那里,他告诉我我的绳子在第二根绳子上的次数。所以我只是设置了一个条件,询问输出是否大于0,它就起作用了。