2016-05-17 10 views
0

so im Versuch, CCTV Filmmaterial, und so weit ich habe kommen mit diesem Code in Powershell zu verwalten:Yesterdays Datum in „MMTT“ und spezifische Ausgabeordner Auswahl auf Datum abhängig

Ruft yesterdays Datum in MMTT (heutige Version wird 0516 sein), -> wählt alle Dateien, die mit dem beginnen -> komprimiert sie ffmpeg mit -> bewegt sich in einem anderen Ordner -> löscht Quelle fules

$a = get-date -format "MMdd" 
$b = 1 
$c = $a - $b 
$d = $c.ToString("0000") 
$inProcessPath = "sourcepath" 
$oldVideos = Get-ChildItem -Include @("$d *") -Path $inProcessPath -Recurse; 

Set-Location -Path 'D:\ffmpeg\bin'; 

foreach ($oldVideo in $oldVideos) { 
    $newVideo = [io.path]::ChangeExtension($oldVideo.FullName, '.avi') 


    $ArgumentList = '-i "{0}" -b 200000 "{1}"' -f $oldVideo, $newVideo; 


    Start-Process -FilePath "D:\ffmpeg\bin\ffmpeg.exe" -ArgumentList $ArgumentList -Wait -NoNewWindow; 
} 

Robocopy D:\ffmpeg\bin\ntv D:\newpaths "$d *.avi" /mov 

get-childitem "sourcepath" -include "$d *.mp4" -recurse | foreach ($_) {remove-item $_.fullname} 

aber in der Testphase erkennen ich, dass meine Implementierung wird nicht funktionieren, wenn es einen Monatwechsel gibt, da von sagen wir 0601 es nicht 0531 produzieren wird, aber 0600.

Auch ich brauche die konvertierten Dateien in ein Verzeichnis nach aktuellen Monaten verschoben werden, wenn ich Ordner Mai, Juni, etc. habe und ich brauche Dateien, die mit 05 beginnen, gehen zu May-Ordner, und so weiter.

Kann jemand helfen, meine meine Aufgabe zu erfüllen, im Code oder in der Beratung

Meine Programmierkenntnisse ist nicht genug, um dieses Problem zu lösen.

Das Hauptziel ist die Automatisierung


Zum ersten Höflichkeit Teil @dotnetom Das funktionierte:

$d = (get-date).AddDays(-1).ToString("MMdd") 

Für den zweiten Teil habe ich mit diesem comeup

$a = (get-date).AddDays(-1).ToString("MMMM") 

Robocopy D:\Main\AdWords\ffmpeg\bin\ntv "D:\path\$a" "$d *.avi" /mov 

Antwort

1

Um den vorherigen Tag zu erhalten, können Sie die Funktion AddDays verwenden, um die gestrige zu bekommen Datum und dann formatieren Sie Ihre Bedürfnisse nach:

$d = (get-date).AddDays(-1).ToString("MMdd") 

Wenn wir diesen Code nach unten brechen, die Komponenten sind:

$currentDay = get-date     # current day 
$yesterday = $currentDay.AddDays(-1) # yesterday 
$formattedYesterday = $yesterday.ToString("MMdd") #yesterday formatted to MMdd 
+0

Das tut es, und mit Ihrem Code i das gleiche für die zweite Teil tat und es hat funktioniert $ a = (get-date) .AddDays (-1) .ToString ("MMMM") danke – AudioTroubler

Verwandte Themen