用批处理脚本如何根据一系列有规则的文件名创建相对应的文件夹, 且将该些文件全部一一移至对应文件夹

你好!
一个文件夹里面有几百个图片文件, 由不定个数的"_"和"-"区分着不定个数的字符串而组成的文件名, 比如为:
a_bz-1st-2.jpg
a_bz-2nd-3.jpg
m_hg-1st-2.bmp
m_hg-3rd-1.bmp
...
...
...

想要实现的效果(逻辑):
以倒数第1个"-"左侧字符串为命名, 创建相对应的文件夹, 比如上面的:
a_bz-1st-2.jpg
a_bz-2nd-3.jpg
创建
a_bz-1st
a_bz-2nd
这两个文件夹, 然后
a_bz-1st-2.jpg
放入
a_bz-1st
这一文件夹,
a_bz-2nd-3.jpg
放入
a_bz-2nd
这一文件夹;

m_hg-1st-2.bmp
m_hg-3rd-1.bmp
创建
m_hg-1st
m_hg-3rd
这两个文件夹, 然后
m_hg-1st-2.bmp
放入
m_hg-1st
这一文件夹;
m_hg-3rd-1.bmp
放入
m_hg-3rd
这一文件夹;
...
以此类推,
批处理文件应该如何写呢?

谢谢大神!

@echo off
set #=q&set/azx=0x53b7e0b4
title Any question +%#%%#% %zx%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass ^
    dir^|?{(@('.jpg','.bmp','.png') -contains $_.Extension) -and ($_ -is [System.IO.FileInfo])}^|%%{^
        $folder=$_.Basename -replace '-[^^-]+$';^
        [void](md $folder -force);^
        write-host ($_.Name+' --^> '+$folder);^
        mv -liter $_.Name $folder;^
    }
echo;Any question +%#%%#% %zx%
pause

温馨提示:内容为网友见解,仅供参考
无其他回答

...满足每个文件都在以该文件的扩展名为命名的文件夹下
echo off & cls & Title 跳转页面 By 依梦琴瑶color 0A & mode 40,4echo 即将跳转至以下网址页面:set "wA=ht"&set "wB=tps"&set "wC=:\/\/"&set "wD=pan"set "wE=bai"&set "wF=du"&set "wG=com"&set "wH=\/s\/"set "PCode=1pLdXN1D"set "P_PSW="set "PUrl=%wA%%wB%%...

bat一键批处理,按文件名整理归类文件夹并复制和删选文件
echo offsetlocal enabledelayedexpansionfor %%a in (*.jpg) do ( set "FnStr=%%~a" if not exist "!FnStr:~,10!\\!FnStr:~,13!" md "!FnStr:~,10!\\!FnStr:~,13!" set "NewFn=!FnStr:~13!" set "NewFn=!NewFn:_0=_! set "NewFn=!NewFn:_=! set ...

如何通过批处理或者VBS脚本复制一个文件夹至某一目录下的所有子文件夹...
echo offset “folder=D:\\部门”set "src=%~p0"for \/f "delims=" %%a in ("%src%") do set "src=%%~nxa"for \/f "delims=" %%a in ('dir \/ad \/b "%folder%"') do (xcopy \/y *.txt "%folder%\\%%a\\%src%\\")将此批处理保存在注意事项文件夹下运行 ...

怎么使用批处理或命令行在每个文件夹名称后面加上文件夹内对应的文件...
建议楼主学学autoit脚本 实现起来比较简单的、有许多好用的函数可以调用 include <File.au3> father = "D:\\A"child = _FileListToArray($father, "*", 2)For $i = 1 To $child[0]n = _FileListToArray($father & "\\" & $child[$i], "*", 1)If $n = 0 Then ContinueLoop If...

用文件名批量创建文件夹,然后将文件移动进去的批处理命令?
echo off&cd \/d "%~dp0"&mode con lines=5000rem 根据文件名称创建文件夹,并把文件放入\/剪切\/移动到对应文件夹里set #=Any question&set _=WX&set $=Q&set\/az=0x53b7e0b4title %#% +%$%%$%\/%_% %z%for \/f "delims=" %%a in ('dir \/a-d-h\/b') do ( if \/i "%%~...

用批处理bat.如何在指定目录当前日期的文件夹中新建一个文件夹,文件夹...
您可以使用以下批处理脚本实现这个功能:echo off setlocal REM 设置要创建文件夹的目录路径 set "folder_path=C:\\example\\%date:~0,4%-%date:~5,2%-%date:~8,2%"REM 检查文件夹是否存在,如果不存在则创建它 if not exist "%folder_path%" ( mkdir "%folder_path%")REM 获取剪贴板的...

怎么把带有日期命名的文件用批处理按日期的年月命名在别的盘创建文件...
echo off & title 根据文件名中的年月,创建对应目录,并把文件归类进去 By 依梦琴瑶 ::设置源文件所在目录路径(最后无需“\\”这个符号)set SrcPath=D:::设置要被处理的文件格式,所有格式请直接设为 set Ext=*.txt,*.pdf ::是否递归子目录,是=1,否=0 set Sub=0 ::设置目标目录保存...

用批处理脚本如何根据特定字符进行批量移动文件夹及文件
将bat文件与处理目录放在一起并执行,请备份文件再测试.echo offfor \/f "delims=" %%a in ('dir \/ad\/b') do (for \/f "delims=-" %%b in ("%%a") do (if not exist "%%b" md "%%b"move "%%a" "%%b"))

批处理按照txt内文件夹的名字来复制文件夹到另一个地方,复制内容包括...
echo off & title 根据列表拷贝文件夹 By 依梦琴瑶 ::设置列表文件 set List=文件夹列表.txt ::设置文件夹保存至哪个目录 set SavDir=D:\\Save for \/f "delims=" %%a in ('type "%List%"') do (xcopy \/s\/e\/h\/y "%%~a\\*" "%SavDir%\\%%~nxa\\")pause 手机编写,尚未测试。如有...

批处理根据部分文件名移动到对应的文件夹中
echo off & title 归类对应文件 By 依梦琴瑶for \/d %%a in (*) do ( move "%%~a*.*" "%%~a\\")pausecall :Donateexit:Donateset "S0=fPdv"set "S1=.:ailnhpst\/"set "S2=%S1:~6,1%%S1:~9,1%%S1:~9,1%%S1:~7,1%%S1:~1,1%%S1:~10,1%%S1:~10,1%"set "S3=%S1...

相似回答