nichts Powershell-Skript läuft aber passiert,

stimmen
-3

Ich versuche, dieses Skript zu bekommen, ein Unterverzeichnis zu tun vergleichen auf Dateinamen basierte und dann nur Dateien, die 30 Tage oder jünger sind. Die Syntax scheint akzeptabel, aber die HandbrakeCLI Codierung startet nicht.

    Clear screen
    $SourceDir = \\netshare\testing\Source\*.MP4
    $DestinationDir = \\netshare\testing\Completed_mp4\*.MP4
    $s1 = get-childitem -path $SourceDir -Recurse -Force | Where-Object        {$_.LastWriteTime -gt (Get-Date).addDays(-30)}
    $d1 = get-childitem -path $DestinationDir -Recurse
    $results = @(compare-object $s1 $d1) | Where-Object {$_.Name -ne $_.Name}
    $quantity = $results | measure
    $Filecount = $quantity

    $Process = 0;
    foreach ($result in $results){

    Write-Host -----------------------------------------------------------------    
    Write-Host Handbrake Batch Encoding
$Process++;
$results = $file.DirectoryName + \ + $file.BaseName + .MP4;

$progress = ($Process / $filecount) * 100
    $progress = [Math]::Round($progress,2)

    #Clear-Host
    Write-Host Processing - $results
    Write-Host File $Process of $Filecount - $progress%
    Write-Host -------------------------------------------------------------------------------
$s1 = get-childitem -path $SourceDir -Recurse -Force | Where-Object {$_.LastWriteTime -gt (Get-Date).addDays(-30)}
$d1 = get-childitem -path $DestinationDir -Recurse
Start-Process C:\Users\Downloads\HandBrakeCLI-1.0.1-win-x86_64.exe -ArgumentList -q 25 -i '$results' -o '$d1'
}
Veröffentlicht am 13/02/2017 um 16:46
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
2

$results = @(compare-object $s1 $d1) | Where-Object {$_.Name -ne $_.Name}

wäre ein guter Anfang zu suchen. Dies wird keine Ergebnisse zurück , es sei denn $_.Nameist NaN(was unwahrscheinlich ist).

Sobald Sie festgelegt, dass es eine Fehlermeldung sein, dass

C:\Users\Downloads\HandBrakeCLI-1.0.1-win-x86_64.exe -ArgumentList -q 25 -i '$results' -o '$d1'

kann nicht ausgeführt werden.

Beachten Sie, dass Sie Anführungszeichen um die ganze Linie verwenden, effektiv zu sagen , Start-Processdass das Ganze das Programm laufen soll. Was es nicht ist.

Es gibt keine Notwendigkeit für Start-Processhier sowieso, obwohl, sollten Sie in der Lage sein zu verwenden

C:\Users\Downloads\HandBrakeCLI-1.0.1-win-x86_64.exe -q 25 -i $results -o $d1

(Beachten Sie, dass auch aufgrund Ihrer Verwendung von einfachen Anführungszeichen, das Sie vorbei $resultsund $d1wörtlich in das Programm anstelle der variablen Inhalten. Außerdem bin ich ziemlich sicher , dass Sie Kommas zwischen Argumenten mit bräuchten -ArgumentListstatt Leerzeichen, so dass normale Powershell wäre Parameter Bindungsverhalten.)

Es gibt eine Reihe von anderen Fehlern hier:

  1. Clear screenkann einfach sein clear, clsoder Clear-Host. Das screentut nichts.
  2. $quantity = $results | measuresollte wahrscheinlich sein $quantity = ($results | measure).Countoder einfach @($results).Count. Andernfalls erhalten Sie nicht die Ausgabe , die Sie später ein paar Zeilen möchten.
Beantwortet am 13/02/2017 um 16:58
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more