日付ごとに自動的にサブフォルダを作成し、一日の終わりにファイルをサブフォルダに移動します


0

私はソフトウェアのiSpyを使ってオーディオを録音し、録音をフォルダに保存するように設定しました。問題は、組織がまったくないということです。そのため、1つのフォルダに何千ものオーディオ録音があります。

私の目標は、日付順に整理し、作成/変更されたすべてのファイルを移動するフォルダ構造を設定することです(注:作成日は変更日と同じではないため、スクリプトに違いがある場合は、 1日の終わりには両方をご用意ください。)

フォルダの場所は次のとおりです。M:\ Security Software \ iSpy \ audio \ VHCEX

これはファイル名の例です。1_2016-04-19_14-06-02.mp3

または1_YYYY-MM-DD_HH-MM-SS.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" }

どちらも私の特定のケースに合わせて微調整する必要がありますが、どちらを編集するかはわかりません。


既存のスクリプトの何が問題になっていますか
DavidPostill

cmdウィンドウはただちに開いたり閉じたりします。ファイル拡張子が.mp3である必要があることを考慮してスクリプトを編集しました(OPにその拡張子を追加するのを忘れていましたが、修正しました)。
Serenity_Life
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.