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

[文件操作] [已解决]批处理怎样将文件按照前缀统一分类?

本帖最后由 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. )
复制代码

回复 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. )
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


    感谢版主大大,谢谢您

TOP

返回列表