[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【已解决】批处理怎样根据文件名实现视频归类?

本帖最后由 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位
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 cobat 于 2015-4-7 09:55 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (*.rm *.mp4 *.mpeg) do (
  4.     set "$=%%a"
  5.     for %%b in ("a:\!$:-=\!") do (
  6.         set "#=%%~nb"
  7.         for %%c in ("!#:~-6!%%~xa") do (
  8.             set "$=!$:-%%~c=!"
  9.             set "$=!$:%%~c=!%%~xa"
  10.             md "!$!" 2>nul
  11.             move "%%a" "!$!" >nul
  12.         )
  13.     )
  14. )
  15. pause
复制代码
1

评分人数

TOP

非常感谢上面两位的代码,会好好研读的

TOP

本帖最后由 bailong360 于 2015-4-6 22:49 编辑
  1. @Echo Off >nul 2>&1 3>&1 4>&1
  2. SetLocal EnableDelayedExpansion
  3. For /F "Delims=" %%a In ('Dir /A-D /B^|Find /v ".bat"') Do (
  4.     Set "FileName=%%~na"
  5.     Echo !FileName:~-6!|Findstr "^[0-9]*$"&&(
  6.         If "!FileName:~-7,1!"=="-" (
  7.             Set "FileName=!FileName:~0,-7!%%~xa"
  8.         ) Else Set "FileName=!FileName:~0,-6!%%~xa"
  9.         Md ".\!FileName!"
  10.         Move "%%a" ".\!FileName!\"
  11.     )||(
  12.         For /F "Tokens=1-3 Delims=-" %%b In ("%%a") Do (
  13.             Md "%%b-%%c-%%d%%~xa"
  14.             Move "%%a" "%%b-%%c-%%d%%~xa\"
  15.         )
  16.     )
  17. )
复制代码
1

评分人数

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::筛选“最后一个分隔符都是 - ”
  4. for /f "delims=" %%a in ('dir /a-d /b ^|find /v ".bat"') do (
  5. set "t=%%~na"
  6. set "t=!t:-=,!"
  7. for %%b in (!t!) do set "str=%%bfedcba9876543210"
  8. set /a len=0x!str:~14,1!
  9. call :mo "%%a" !len!
  10. )
  11. pause
  12. :mo
  13. set name=%~n1
  14. set name=!name:~,-%2!
  15. if not exist "!name![%~x1]\" md "!name![%~x1]\"
  16. move %1 "!name![%~x1]\"
  17. goto :eof
复制代码
1

评分人数

TOP

本帖最后由 pcl_test 于 2015-4-6 22:41 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::筛选“最后几位都是6位”
  4. for /f "delims=" %%a in ('dir /a-d /b ^|find /v ".bat"') do (
  5. set "name=%%~na"
  6. if not exist "!name:~,-6![%%~xa]\" md "!name:~,-6![%%~xa]\"
  7. move "%%a" "!name:~,-6![%%~xa]\"
  8. )
  9. pause
复制代码

TOP

回复 7# pcl_test


    很不好意思,给您带来不少分歧,写这帖子有欠考虑

TOP

回复 7# pcl_test


    现在在同一个文件夹里:奔驰--C26--0L-000001.mpeg
奔驰--C26--0L-000002.mpeg
奔驰全新0L-000001.mpeg
奔驰全新0L-000002.mpeg
。。。。。。
不会有类似这些分歧了

TOP

回复 7# pcl_test


    感谢您,现在已将所有视频文件按照命名规则放到两个文件夹了,即最后一个分隔符都是  - 和最后几位都是6位,所以要做两个批处理

TOP

回复 5# wangdao6699
你以文件名“最后一个分隔符都是  - ”和“最后几位都是6位”为筛选条件不妥,比如你举例的
奔驰--C26--0L-000001.mpeg
奔驰--C26--0L-000002.mpeg
奔驰全新0L-000001.mpeg
奔驰全新0L-000002.mpeg
这些是分到“最后一个分隔符都是  - ”还是“最后几位都是6位”??
1

评分人数

TOP

回复 3# 小文


    谢谢,命名规则已修改

TOP

本帖最后由 wangdao6699 于 2015-4-6 21:13 编辑

回复 2# pcl_test


    文件夹命名如:
美系-SU-V[高清版].rm,较---量..-V...mp4,奔驰--C26--0L.mpeg
。。。。。。
俄罗斯-V[高清版].rm,试车】看看量.1.-V .mp4,奔驰全新0L-.mpeg

TOP

回复 2# pcl_test


   不好意思,一着急,打错了,是这样的,文件名命名规律如一楼(两种,做两个批处理【分别针对两种做的,做一个那更好了】)由于文件比较多

TOP

回复 1# wangdao6699


方案1
提取文件名如“美系”,以些建立目录,移动‘*美系*’到美系文件夹。以此类推……
优缺点:程序编写简单,手动量大。
方案2
根据文件后面的0001到建一个目录,移动相应文件到这个目录。
优缺点:程序编写——反正我不会,手动量小。

TOP

怎么分?
美系-SU-V[高清版]-01.rm
美系-SU-V[高清版]-02.rm
美系-SU-V[高清版]000001.rm
美系-SU-V[高清版]000002.rm
都分到"美系-SU-V[高清版]rm"文件夹里?

TOP

返回列表