Board logo

标题: [文件操作] [分享]批处理将文件名首列相同的文件归入以任一文件名作为文件夹名的文件夹内 [打印本页]

作者: 77七    时间: 2024-7-20 14:42     标题: [分享]批处理将文件名首列相同的文件归入以任一文件名作为文件夹名的文件夹内

本帖最后由 77七 于 2024-7-20 14:46 编辑
  1. 三亚_2024_06_20-130616.jpg
  2. 三亚_2024_06_20-135001.jpg
  3. 三亚_2024_06_21-135003.jpg
  4. 青岛_2024_07_10-131023.jpg
  5. 青岛_2024_07_11-132825.jpg
  6. 昆明_2024_07_19-132805.jpg
复制代码

以上6张图片
我想创建 文件夹 "三亚_2024_06_20-130616\"(任一即可,即 "三亚_2024_06_20-135001\"、"三亚_2024_06_21-135003\" 也可以),并把 三亚_*.jpg归入此文件夹
以此类推
特例
昆明只有一张,不创建文件夹,不归入。

效果如下:
归入前:




归入后:

作者: 77七    时间: 2024-7-20 14:44

  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "tokens=1* delims=_" %%a in ('dir /b /a-d "*_*.jpg"') do (
  4. if not defined _"%%a" (
  5. set _"%%a"=%%a_%%~nb
  6. ) else if exist "%%a_*.jpg" (
  7. call md "%%_"%%a"%%\"
  8. call move "%%a_*.jpg" "%%_"%%a"%%\"
  9. )
  10. )
  11. pause
复制代码

作者: zhengzhenhui    时间: 2024-7-21 01:41

本帖最后由 zhengzhenhui 于 2024-7-21 01:50 编辑

有分隔符的情况下,如果文件夹名只取 三亚  青岛 改如何写
昆明 只有一张或者等于一张就不移入
作者: 77七    时间: 2024-7-21 02:09

回复 3# zhengzhenhui


  
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "tokens=1* delims=_" %%a in ('dir /b /a-d "*_*.jpg"') do (
  4. if not defined _"%%a" (
  5. set _"%%a"=1
  6. ) else if exist "%%a_*.jpg" (
  7. md "%%a"
  8. move "%%a_*.jpg" "%%a\"
  9. )
  10. )
  11. pause
复制代码

作者: zhengzhenhui    时间: 2024-7-21 02:43

  1. @echo off
  2. cd /d "%~dp0"
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in ('dir /b /a-d "*-*"') do (
  5.     set "filename=%%i"
  6.     for /f "tokens=1* delims=-" %%a in ("!filename!") do (
  7.         set "folderName=%%a"
  8.         if not exist "!folderName!" (
  9.             md "!folderName!"
  10.         )
  11.         move "%%i" "!folderName!"
  12.     )
  13. )
  14. endlocal
  15. pause
复制代码
这个是只保留特殊符号左边的名称作文件夹并移入




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