我正在尝试根据文件名的开头将文件移动到文件夹中,
例如,我有六个文件,xx_0_1.png,xx_0_2.png,xx_1_1.png,xxx_0_1.png,xxx_0_2.png,xxx_1_1.png
(他们并不总是遵循这种拥有三个人的模式)
我需要根据_0之前的字符将它们分类到文件夹中(因为可能会出现hello_world_0_1.png之类的名称,所以名称永远不会包含整数。后面的数字没有限制它们的大小。
因此,如果我有fruit_0_1.png,fruit_0_2.png,fruit_1_1.png,fence_0_1.png,fence_0_2.png,hello_world_0_1.png和hello_world_0_2.png,它们将被分类为以下文件夹:
水果
围栏
你好,世界
png文件名的格式始终为(sometext)(firstnumber)(secondnumber).png sometext可以包含下划线,但经常不包含数字。firstnumber和secondnumber可以和最终的一样大(通常总是小于20,但可以更大),并且文件始终是.png类型
我已经尝试了其他堆栈溢出问题的一些解决方案,但是还没有找到解决方案。
我得到的最接近的结果是将每个文件分别排序到各自的文件夹中(这不是我想要的),此示例就是我所拥有的:
@echo off
for %%a in (*.*) do (
md "%%~na" 2>nul
move "%%a" "%%~na"
)
cd ..
del %%~na
pause
当前,它将每个文件放入其自己的文件夹中,而不是在名称后拆分。
这是一个示例脚本:
@For %%F In ("*_*_*.png")Do @(Set "oF=%%F"
SetLocal EnableDelayedExpansion
For %%D In ("!oF:_=\!\..\..")Do @(Set "oD=%%~dpnD"
Set "oD=!oD:%__CD__%=!"
RoboCopy . "!oD:\=_!" "%%F" /Mov>NUL)
EndLocal)
由于您的问题仅是代码请求,因此在发布问题时,我将不对它的工作原理,使用方法或在问题之外的任何情况下进行扩展进行解释。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句