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

[文件操作] 求助批处理识别文件名创建文件夹并将文件移入

文件格式为:A_B_C_32P0001.JPG              D_E_F_54Ps0001.JPG
                  A_B_C_32P0002.JPG              D_E_F_54Ps0002.JPG
                              .                                               .
                              .                                               .
                              .                                               .
                  A_B_C_32P0032.JPG              D_E_F_54Ps0054.JPG
32P为图片数量,数量不固定。希望识别到数字+P截止,创建名称为A_B_C_32P和D_E_F_54P的文件夹并移入文件。
ABC DEF仅作举例,不是实际文件名。

本帖最后由 aloha20200628 于 2024-12-26 20:56 编辑

回复 1# xukan

以下代码存为 test.bat 运行,与源文件 *.jpg 同目录...
  1. @echo off &setlocal enabledelayedexpansion
  2. for /f "delims=" %%F in ('dir /b/a-d *_*p*.jpg') do (
  3.    set "dd=%%~nF" &set "d=!dd!" &set "n=" &(call :cutEd)
  4.    for %%k in (!k!) do (set "d=!dd:~,%%k!")
  5.    if not exist "!d!\" md "!d!"
  6.    move /y "%%F" "!d!\")
  7. pause&exit/b
  8. :cutEd
  9.    if "!d!"=="" (exit/b) else set "c=!d:~-1!"
  10.    if "!c!"=="_" (exit/b) else if /i "!c!"=="p" set "k=!n!"
  11.    set "d=!d:~,-1!" &set/a "n-=1" &goto :cutEd
复制代码

TOP

回复 2# aloha20200628


    运行后部分结果如下
       _24p          _52p          _63p      
       _24pp        _52pap      _63p6p
   能否再优化一下,解决可能有多个P的情况。

TOP

回复 3# xukan

2楼代码已更新,再试试吧...

TOP

返回列表