标题: [文件操作] 【已解决】批处理怎样根据文件名实现视频归类? [打印本页]
作者: wangdao6699 时间: 2015-4-6 19:15 标题: 【已解决】批处理怎样根据文件名实现视频归类?
本帖最后由 wangdao6699 于 2015-4-7 06:34 编辑
视频放到相应文件夹里,输出文件夹是:文件名+扩展名
如:美系-SU-V[高清版].rm,较---量..-V...mp4,奔驰--C26--0L.mpeg
。。。。。。
俄罗斯-V[高清版].rm,试车】看看量.1.-V .mp4,奔驰全新0L-.mpeg
美系-SU-V[高清版]-01.rm
美系-SU-V[高清版]-02.rm
。。。。。
较---量..-V..-001.mp4
较---量..-V..-002.mp4
。。。
奔驰--C26--0L-000001.mpeg
奔驰--C26--0L-000002.mpeg
。。。。。。
特点:最后一个分隔符都是 -
俄罗斯-V[高清版]000001.rm
俄罗斯-V[高清版]000002.rm
。。。。。
试车】看看量.1.-V 000001.mp4
试车】看看量.1.-V 000002.mp4
。。。
奔驰全新0L-000001.mpeg
奔驰全新0L-000002.mpeg
。。。。。。
特点:最后几位都是6位
作者: pcl_test 时间: 2015-4-6 19:53
怎么分?
美系-SU-V[高清版]-01.rm
美系-SU-V[高清版]-02.rm
美系-SU-V[高清版]000001.rm
美系-SU-V[高清版]000002.rm
都分到"美系-SU-V[高清版]rm"文件夹里?
作者: 小文 时间: 2015-4-6 20:44
回复 1# wangdao6699
方案1
提取文件名如“美系”,以些建立目录,移动‘*美系*’到美系文件夹。以此类推……
优缺点:程序编写简单,手动量大。
方案2
根据文件后面的0001到建一个目录,移动相应文件到这个目录。
优缺点:程序编写——反正我不会,手动量小。
作者: wangdao6699 时间: 2015-4-6 20:58
回复 2# pcl_test
不好意思,一着急,打错了,是这样的,文件名命名规律如一楼(两种,做两个批处理【分别针对两种做的,做一个那更好了】)由于文件比较多
作者: wangdao6699 时间: 2015-4-6 21:06
本帖最后由 wangdao6699 于 2015-4-6 21:13 编辑
回复 2# pcl_test
文件夹命名如:
美系-SU-V[高清版].rm,较---量..-V...mp4,奔驰--C26--0L.mpeg
。。。。。。
俄罗斯-V[高清版].rm,试车】看看量.1.-V .mp4,奔驰全新0L-.mpeg
作者: wangdao6699 时间: 2015-4-6 21:18
回复 3# 小文
谢谢,命名规则已修改
作者: pcl_test 时间: 2015-4-6 21:34
回复 5# wangdao6699
你以文件名“最后一个分隔符都是 - ”和“最后几位都是6位”为筛选条件不妥,比如你举例的
奔驰--C26--0L-000001.mpeg
奔驰--C26--0L-000002.mpeg
奔驰全新0L-000001.mpeg
奔驰全新0L-000002.mpeg
这些是分到“最后一个分隔符都是 - ”还是“最后几位都是6位”??
作者: wangdao6699 时间: 2015-4-6 21:42
回复 7# pcl_test
感谢您,现在已将所有视频文件按照命名规则放到两个文件夹了,即最后一个分隔符都是 - 和最后几位都是6位,所以要做两个批处理
作者: wangdao6699 时间: 2015-4-6 21:49
回复 7# pcl_test
现在在同一个文件夹里:奔驰--C26--0L-000001.mpeg
奔驰--C26--0L-000002.mpeg
奔驰全新0L-000001.mpeg
奔驰全新0L-000002.mpeg
。。。。。。
不会有类似这些分歧了
作者: wangdao6699 时间: 2015-4-6 21:52
回复 7# pcl_test
很不好意思,给您带来不少分歧,写这帖子有欠考虑
作者: pcl_test 时间: 2015-4-6 22:03
本帖最后由 pcl_test 于 2015-4-6 22:41 编辑
- @echo off
- setlocal enabledelayedexpansion
- ::筛选“最后几位都是6位”
- for /f "delims=" %%a in ('dir /a-d /b ^|find /v ".bat"') do (
- set "name=%%~na"
- if not exist "!name:~,-6![%%~xa]\" md "!name:~,-6![%%~xa]\"
- move "%%a" "!name:~,-6![%%~xa]\"
- )
- pause
复制代码
作者: pcl_test 时间: 2015-4-6 22:40
- @echo off
- setlocal enabledelayedexpansion
- ::筛选“最后一个分隔符都是 - ”
- for /f "delims=" %%a in ('dir /a-d /b ^|find /v ".bat"') do (
- set "t=%%~na"
- set "t=!t:-=,!"
- for %%b in (!t!) do set "str=%%bfedcba9876543210"
- set /a len=0x!str:~14,1!
- call :mo "%%a" !len!
- )
- pause
- :mo
- set name=%~n1
- set name=!name:~,-%2!
- if not exist "!name![%~x1]\" md "!name![%~x1]\"
- move %1 "!name![%~x1]\"
- goto :eof
复制代码
作者: bailong360 时间: 2015-4-6 22:44
本帖最后由 bailong360 于 2015-4-6 22:49 编辑
- @Echo Off >nul 2>&1 3>&1 4>&1
- SetLocal EnableDelayedExpansion
- For /F "Delims=" %%a In ('Dir /A-D /B^|Find /v ".bat"') Do (
- Set "FileName=%%~na"
- Echo !FileName:~-6!|Findstr "^[0-9]*$"&&(
- If "!FileName:~-7,1!"=="-" (
- Set "FileName=!FileName:~0,-7!%%~xa"
- ) Else Set "FileName=!FileName:~0,-6!%%~xa"
- Md ".\!FileName!"
- Move "%%a" ".\!FileName!\"
- )||(
- For /F "Tokens=1-3 Delims=-" %%b In ("%%a") Do (
- Md "%%b-%%c-%%d%%~xa"
- Move "%%a" "%%b-%%c-%%d%%~xa\"
- )
- )
- )
复制代码
作者: wangdao6699 时间: 2015-4-7 06:32
非常感谢上面两位的代码,会好好研读的
作者: cobat 时间: 2015-4-7 09:29
本帖最后由 cobat 于 2015-4-7 09:55 编辑
- @echo off
- setlocal enabledelayedexpansion
- for %%a in (*.rm *.mp4 *.mpeg) do (
- set "$=%%a"
- for %%b in ("a:\!$:-=\!") do (
- set "#=%%~nb"
- for %%c in ("!#:~-6!%%~xa") do (
- set "$=!$:-%%~c=!"
- set "$=!$:%%~c=!%%~xa"
- md "!$!" 2>nul
- move "%%a" "!$!" >nul
- )
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |