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

[文件操作] [分享]批处理将文件名首列相同的文件归入以任一文件名作为文件夹名的文件夹内

本帖最后由 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归入此文件夹
以此类推
特例
昆明只有一张,不创建文件夹,不归入。

效果如下:
归入前:




归入后:
bat小白,请多指教!谢谢!

  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
复制代码
bat小白,请多指教!谢谢!

TOP

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

有分隔符的情况下,如果文件夹名只取 三亚  青岛 改如何写
昆明 只有一张或者等于一张就不移入

TOP

回复 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
复制代码
bat小白,请多指教!谢谢!

TOP

  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
复制代码
这个是只保留特殊符号左边的名称作文件夹并移入

TOP

返回列表