Я использую программное обеспечение iSpy для записи аудио, и я настроил его для сохранения записей в папке. Проблема в том, что организации вообще нет, поэтому у меня есть тысячи аудиозаписей в одной папке.
Моя цель состоит в том, чтобы настроить структуру папок, которая организует по дате и перемещает все файлы, которые были созданы / изменены (примечание: дата создания не совпадает с датой изменения, поэтому, если есть разница в сценарии, я ' Мне нравятся оба, пожалуйста.) в конце дня.
Расположение папки: M:\Security Software\iSpy\audio\VHCEX
Это пример имени файла:1_2016-04-19_14-06-02.mp3
или 1_ГГГГ-ММ-ДД_ЧЧ-ММ-СС.mp3
В своем исследовании я натолкнулся на следующие сценарии [источник]
@echo off
for /d %%i in (*) do (
cd %%i
call :doMove
cd ..
)
echo Really Done
goto eof:
pause
:doMove
echo Moving files... Please wait...
for /F "tokens=1-3,4* delims=-_" %%a in ('dir /b *.avi') do (
title Processing %%b-%%c-%%d_%%e
if not exist ".\%%b\%%c\%%d" (
mkdir ".\%%b\%%c\%%d"
echo New Date: \%%b\%%c\%%d
)
if exist "%%a_%%b-%%c-%%d_%%e" move "%%a_%%b-%%c-%%d_%%e" ".\%%b\%%c\%%d\%%e"
if exist "%%a_%%b_%%c-%%d-%%e" move "%%a_%%b_%%c-%%d-%%e" ".\%%b\%%c\%%d\%%e"
)
for /F "tokens=1-3,4* delims=-_" %%a in ('dir /b *.mp4') do (
title Processing %%b-%%c-%%d_%%e
if not exist ".\%%b\%%c\%%d" mkdir ".\%%b\%%c\%%d"
if exist "%%a_%%b-%%c-%%d_%%e" move "%%a_%%b-%%c-%%d_%%e" ".\%%b\%%c\%%d\%%e"
if exist "%%a_%%b_%%c-%%d-%%e" move "%%a_%%b_%%c-%%d-%%e" ".\%%b\%%c\%%d\%%e"
)
echo Moving Thumbs
for /F "tokens=1-3,4* delims=-_" %%a in ('dir /b thumbs\*.jpg') do (
title Processing %%b-%%c-%%d_%%e
if exist "thumbs\%%a_%%b-%%c-%%d_%%e" move "thumbs\%%a_%%b-%%c-%%d_%%e" ".\%%b\%%c\%%d\%%e"
if exist "thumbs\%%a_%%b_%%c-%%d-%%e" move "thumbs\%%a_%%b_%%c-%%d-%%e" ".\%%b\%%c\%%d\%%e"
)
title Done.
:EOF
Я также нашел Perl скрипт [источник]
#!/usr/bin/perl -w
use strict;
use File::stat;
use File::Copy;
use POSIX;
use Mail::Sendmail;
use Date::Calc qw(:all);
my $oldest_week = 4;
my $delete_week = 1;
my $move_count = 0;
my $delete_count = 0;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime;
$year += 1900;
$mon += 1;
my ($current_week,$current_year) = Week_of_Year($year, $mon, $mday);
my @folders = ("D:/iSpy/video/Front Door",
"D:/iSpy/video/Front Path",
"D:/iSpy/video/Garden",
"D:/iSpy/video/Lounge",
"D:/iSpy/video/Patio",
"D:/iSpy/video/Shed");
foreach (@folders)
{
my $viddir=$_;
print "$viddir\n\n";
opendir("curdir",$viddir)||die("Cannot open Directory!");
my @names=readdir("curdir");
foreach (@names)
{
my $name=$_;
my $source = $viddir."/".$name;
my $upname=uc($name);
my $pos_avi=index($upname,".AVI");
my $pos_mp4=index($upname,".MP4");
if ($pos_avi > 0 or $pos_mp4 > 0)
{
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime (stat($source)->mtime);
$year += 1900;
$mon += 1;
my ($week,$year) = Week_of_Year($year, $mon, $mday);
print "file $source was updated on $year $mon $mday - that was week $week - ";
my $target="$viddir/$week";
print "Move to folder $viddir/$week\n";
move($source,$target);
$move_count ++;
}
}
}
if ($oldest_week >= $current_week) {
$delete_week = 52 + $current_week - $oldest_week;
} else {
$delete_week = $current_week - $oldest_week;
}
@folders = ("D:/iSpy/video/Front Door/$delete_week",
"D:/iSpy/video/Front Path/$delete_week",
"D:/iSpy/video/Garden/$delete_week",
"D:/iSpy/video/Lounge/$delete_week",
"D:/iSpy/video/Patio/$delete_week",
"D:/iSpy/video/Shed/$delete_week");
foreach (@folders)
{
my $delete_dir=$_;
opendir("curdir",$delete_dir)||die("Cannot open Directory!");
my @names=readdir("curdir");
foreach (@names) {
my $name=$_;
my $target = "$delete_dir/$name";
my $upname=uc($name);
my $pos_avi=index($upname,".AVI");
my $pos_mp4=index($upname,".MP4");
if ($pos_avi > 0 or $pos_mp4 > 0)
{
print "file to delete is $target\n";
unlink $target;
$delete_count ++;
}
}
}
my $mail_body = "$move_count moved";
if ($delete_count > 0) {
$mail_body = $mail_body . ", $delete_count deleted from folder $delete_week\n";
}
print "$mail_body\n";
my %mail = (
To => 'name@somewhere.com',
From => 'iSpy@anywhere.com',
Subject => 'Daily iSpy Recordings Move / Delete',
Message => $mail_body,
'content-type' => 'text/html; charset="iso-8859-1"',
'X-Mailer' => "Mail::Sendmail version $Mail::Sendmail::VERSION",
);
$mail{Smtp} = 'smtp.anywhere.com';
if (sendmail %mail) { print "Mail sent OK.\n\n" }
else { print "Error sending mail: $Mail::Sendmail::error \n" }
И то и другое нужно настроить в соответствии с моим конкретным случаем, но я не уверен, как редактировать ни один из них.