Erstellen Sie automatisch Unterordner nach Datum und verschieben Sie die Dateien am Ende des Tages in einen Unterordner
Ich verwende die Software iSpy, um Audio aufzunehmen, und ich habe es so eingerichtet, dass die Aufnahmen in einem Ordner gespeichert werden. Das Problem ist, dass es überhaupt keine Organisation gibt, also habe ich Tausende von Audioaufnahmen in einem Ordner.
Mein Ziel wäre es, eine Ordnerstruktur einzurichten, die nach Datum sortiert und alle Dateien, die erstellt / geändert wurden, verschiebt (Hinweis: Das Erstellungsdatum stimmt nicht mit dem Änderungsdatum überein. Wenn also ein Unterschied besteht, schreibe ich ' d wie beide bitte zur Verfügung stehen.) am Ende des Tages.
Der Ordnerspeicherort lautet: M: \ Security Software \ iSpy \ audio \ VHCEX
Dies ist ein Beispieldateiname: 1_2016-04-19_14-06-02.mp3
oder 1_YYYY-MM-DD_HH-MM-SS.mp3
Bei meiner Recherche bin ich auf folgende Skripte gestoßen [Quelle]
@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
Ich habe auch ein Perl-Skript gefunden [Quelle]
#!/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.anywhere.com'; if (sendmail %mail) { print "Mail sent OK.\n\n" } else { print "Error sending mail: $Mail::Sendmail::error \n" }
Beide müssen an meinen speziellen Fall angepasst werden, aber ich bin mir nicht sicher, wie ich sie bearbeiten soll.
0 Antworten auf die Frage
Verwandte Probleme
-
3
Wie kann ich eine Verzeichnisstruktur "invertieren"?
-
1
Pausieren Sie alle Aufgaben außer x CPU-intensiven Aufgaben
-
7
Starten Sie den Synergy-Client beim Booten in Mac OS X
-
4
Wie synchronisieren Sie GreaseMonkey-Skripts zwischen Computern?
-
1
Kann ich ein Skript schreiben, das Benutzer automatisch wechselt?
-
6
Guter PowerShell-Leitfaden, der durch fortgeschrittene Verwendung Einstieg leistet
-
3
FTP "PUT" schlägt von der virtuellen Maschine aus, aber nicht vom Host-PC aus: 504 Der Befehl ist fü...
-
1
ksh entspricht perl $! Fehlerursache
-
2
Subskriptionsfehler außerhalb des Bereichs in VBScript-Skript
-
5
crontab, um osx aus dem schlaf zu erwecken