我有一系列的照片在一个文件夹中的名称格式类似于这样:
BA-ML-6256_Gocchup1.jpg
BA-ML-6256_Gocchup2.jpg
BA-ML-17302_Gocchup1.jpg
BA-ML-17302_Gocchup2.jpg
我想创建新的文件夹,如下所示,其中包含的文件:
BA-ML-6256
BA-ML-17302
我尝试使用这个脚本:
@echo off
for %%i in (*) do (
if not "%%~ni" == "organize" (
md "%%~ni" && move "%%~i" "%%~ni"
)
)
但它创建了这4个文件夹:
BA-ML-6256_Gocchup1
BA-ML-6256_Gocchup2
BA-ML-17302_Gocchup1
BA-ML-17302_Gocchup2
请帮助我创建一个批处理脚本,将使这项工作。
2条答案
按热度按时间gtlvzcf81#
所需的MD命令仅用于测试目的。验证命令正确后,将
ECHO MD
更改为MD
以实际创建目录。追加2>nul
以隐藏错误消息(例如,当目录已存在时)所需的MOVE命令仅用于测试目的。验证命令正确后,将
ECHO MOVE
更改为MOVE
以实际移动文件。追加>nul
以隐藏报告消息(例如1 file moved
)当然,如果您想处理当前目录,可以删除整个
%sourcedir%\
。dir
命令仅列出目录中的文件名,然后仅列出与*_*.jpg
匹配的文件名,即 * anything1 _ anything2 *. jpgfor /f
将anything1
分配给%%b
,将anything2.jpg
分配给%%c
,使用_
作为分隔符(参见提示中的for /?
,或SO上的数千个项目以获取示例/文档)然后创建目录并移动文件。
傻瓜!
nnvyjq4y2#
您需要解析文件名以派生目标文件夹名称。
样品批文件
下面的批处理文件应该可以满足您的需要:
这将在“_”字符处拆分文件名以派生目标文件夹
示例输出
我从这个文件夹布局开始:
运行该批处理文件将得到以下输出:
并生成以下文件夹布局: