Board logo

标题: [文件操作] [已解决]批处理怎样将文件按照前缀统一分类? [打印本页]

作者: guliduo    时间: 2022-11-21 13:04     标题: [已解决]批处理怎样将文件按照前缀统一分类?

本帖最后由 guliduo 于 2022-11-21 17:04 编辑

请教:
我有如下文件:0100-2015-004-0001-0001.pdf,0100-2015-004-0001-0003.pdf,0100-2015-005-0010-0001.pdf,0100-2015-005-0010-0001.JPG……
步骤1.先对文件类型进行分类,建立.TXT,.PDF,.JPG  等格式名称文件夹
步骤2.到各个格式文件夹内,以指定名称分类,比如以文件名字的前三段(0100-2015-004)或者文件名字的前四段(0100-2015-004-0001)新建文件夹,然后将文件名中包含此三段文字或者此四段文字的文件移动到文件夹中?可以理解为将拥有相同前缀的文件统一归到一个文件夹中,并且可以在相同前缀中自己指定文字长度进行文件夹分类
同理,是否可以直接对文件夹也进行步骤2中的分类操作呢?
请大神指教

现有步骤1的代码,如下:
  1. @echo off
  2. for %%a in (*) do (
  3.     if /i "%%~xa" neq ".bat" (
  4.         if not exist %%~xa md %%~xa
  5.         move "%%a" "%%~xa\"
  6.     )
  7. )
复制代码

作者: Batcher    时间: 2022-11-21 15:33

回复 1# guliduo


请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/Koje4FufWxWBs7ioDy_LJA
  1. @echo off
  2. REM 设置前缀字符串长度
  3. set PreLen=9
  4. cd /d "%~dp0"
  5. setlocal enabledelayedexpansion
  6. for %%a in (*) do (
  7.     if /i "%%~xa" neq ".bat" (
  8.         if not exist "%%~xa" (
  9.             md "%%~xa"
  10.         )
  11.         move /y "%%a" "%%~xa\"
  12.     )
  13. )
  14. for /f "delims=" %%i in ('dir /b /ad .*') do (
  15.     echo 正在处理文件夹:%%i
  16.     pushd "%%i"
  17.     for /f "delims=" %%j in ('dir /b /a-d') do (
  18.         set "FileName=%%j"
  19.         set "FolderName=!FileName:~0,%PreLen%!"
  20.         if not exist "!FolderName!" (
  21.             md "!FolderName!"
  22.         )
  23.         move /y "%%j" "!FolderName!\"
  24.     )
  25.     popd
  26. )
复制代码

作者: guliduo    时间: 2022-11-21 17:04

回复 2# Batcher


    感谢版主大大,谢谢您




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2