批处理文件基于文件名创建目录,将类似文件移动到新目录

问题描述 投票:0回答:1

我在目录中有数百个文件,它们的名称不同,但是其中一些是相关的。

这些文件主要是.AI和PDF,并且都是这样的名称:

  • FILE1_retail_xxx.ai
  • FILE1_label_xxx.ai
  • FILE2_retail_xxx.ai
  • FILE2_label_xxx.ai
  • FILE3_retail_xxx.ai
  • FILE3_label_xxx.ai

我想做的是为FILE1,FILE2,FILE3等创建一个批处理文件目录,并将所有以FILE1,FILE2,FILE3等开头的文件移动到这些新创建的目录中。

我已经使用了它,但是它只是为整个文件名创建一个DIR。

@echo off
for %%i in (*) do (
 if not "%%~ni" == "organize" (
  md "%%~ni" && move "%%~i" "%%~ni"
 )
)

这不能满足我的需要,任何人都可以帮助将其按摩成我所需要的,或者给我新的批处理文件进行尝试吗?

谢谢!这将为我节省大量的手工工作!

batch-file batch-processing
1个回答
0
投票

您需要使用另一个_循环将文件名分割为for /f

@echo off
for %%i in (*) do (
  if not "%%~ni" == "organize" ( 
    for /f "delims=_" %%a in ("%%~ni") do (
      md "%%a" 2>nul 
      move "%%~i" "%%~a\" 
  )
)

2>0禁止显示错误消息,如果文件夹已经存在]

© www.soinside.com 2019 - 2024. All rights reserved.