我有一些IP摄像机根据检测到的移动每分钟记录1-2个文件,我正在寻找一种方法,根据文件名自动将一组视频文件移动到新的或现有的文件夹中。以时间戳格式。这将在每天特定时间在Windows 7中完成,此时相机不记录。
如果新创建的文件不存在该文件夹(通常情况下除了小时的第一个文件之外的所有文件),理想情况下,它将根据创建它们的小时(不是最后修改)进行)。
这最好通过cmd或python脚本完成,以及如何?我的猜测是我必须从文件名中解析小时/日/月/年,检查是否存在相应的文件夹,如果没有创建,则移动它。
谢谢!
答案 0 :(得分:1)
简单的脚本,不是递归的。
@echo off
@rem USAGE: MoveIt FromDir ToDir
setlocal
if "%1"=="" goto :Usage
if "%2"=="" goto :Usage
pushd "%~2"
set target=%CD%
popd
pushd "%~1"
set root=%CD%
rem xxYYYY MM DD HH MM SS
rem 1_2013-09-20_25-11-08
rem 0123456789.123456789.
for %%a in (*) do call :MoveIt "%%a"
goto :EOF
:MoveIt
rem Extract just the filename (no path or extension)
set name=%~n1
rem Extract the hour
set hour=%name:~13,2%
rem Create the directory hourname
if not exist "%hour%" mkdir "%hour%"
rem Move the file
echo move "%~1" "%target%\%hour%"
goto :EOF
:Usage
echo Usage: moveByTime.bat RootDirectory TargetDirectory
goto :EOF
答案 1 :(得分:1)
这可能会更直接一些。修改第2行和第3行以适合您的系统,然后将批处理文件放在您的用户文件夹中,您可以安排它。
首先在一些示例文件上测试它。
@echo off
set "target=d:\monitoring video\backups"
pushd "c:\camera\videos folder"
for /f "tokens=5 delims=-_" %%a in (' dir /b /a-d ') do (
echo processing "%%a"
md "%target%\%%a" 2>nul
move "%%a" "%target%\%%a" >nul
)
popd
BTW,您的要求是创建一个hour
文件夹并将相应的文件移入其中。这意味着每天01小时的文件将进入相同的01
文件夹。那是你想要的吗?