所以我试图管理闭路电视录像, 到目前为止,我已经在powershell中提出了这个代码:
获取MMdd中的昨天日期(今天的版本将是0516), - >选择以该开头的所有文件 - >使用ffmpeg压缩它们 - >移动到另一个文件夹 - >删除源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}
但是,在测试阶段,我意识到当有一个月的切换时我的实现不会工作,因为从0601开始它不会产生0531,而是0600。
此外,我需要根据当前月份将转换后的文件移动到目录,所以如果我有文件夹May,June等。我需要以05开头的文件转到May文件夹,依此类推。
有人可以通过代码或建议帮助我完成任务
我的编程知识不足以解决这个问题。
主要目标是自动化
第一部分由@dotnetom提供 这很有效:
$d = (get-date).AddDays(-1).ToString("MMdd")
对于第二部分,我已经提出了这个
$a = (get-date).AddDays(-1).ToString("MMMM")
Robocopy D:\Main\AdWords\ffmpeg\bin\ntv "D:\path\$a" "$d *.avi" /mov
答案 0 :(得分:1)
要获得前一天,您可以使用功能AddDays
获取昨天的日期,然后根据您的需要对其进行格式化:
$d = (get-date).AddDays(-1).ToString("MMdd")
如果我们破坏了这段代码,那么组件就是:
$currentDay = get-date # current day
$yesterday = $currentDay.AddDays(-1) # yesterday
$formattedYesterday = $yesterday.ToString("MMdd") #yesterday formatted to MMdd