怎么把文件名部分相同的文件移动到自建立文件夹下?

就图中的列子,它们都有相同的后缀202003-003,三个文件分别位于同目录的三个文件夹,aa,bb,cc.把它们移动到同目录下文件分类下202003-003文件夹中。如何实现,每一个文件夹有几千个文件。

第1个回答  2021-11-19
新建一个TXT文档,粘贴以下代码,并更改后缀名为,把三个和这个放到同一个文件夹下(此文件夹下不能有其它文件夹或Excel、Word文件),双击运行此bat文件,就会在此文件夹所在磁盘的下创建一个XFLWJ文件夹,分类好的文件夹就在里面。
@echo off
setlocal enabledelayedexpansion
for /r %%i in (*.xls *.doc) do (
set wjmq=%%i
set wjmj=%%~ni
set wjmj=!wjmj:~-10!
set pt=%~d0%
set xwjj=\XFLWJ\
set xm=\*.*
set cpwjm=!pt!!xwjj!!wjmj!!xm!
xcopy !wjmq! !cpwjm!
)
exit追问

变量 xwjj是文件夹名称,那么保存在桌面桌面写,麻烦了

追答

把set pt=%~d0%改成set pt=C:\Users\Administrator\Desktop

本回答被提问者采纳
第2个回答  2021-11-18
解题思路如下。获取该文件夹里面的所有文件名。
然后用-分割。取45列。然后把他们剪切到以45列命名的文件夹内。
for /r %%a in (*) do for /f "tokens=4,5 delims=-" %%b in ('Echo %%~na') do move %%a %%b-%%c
for /f "tokens=*" %%a in ('dir /b /ad /s "%cd%"^|sort /r') do rd "%%a" 2>nul
移动之后 删除该文件夹内的空目录
写个bat存在202003-003同一层目录运行即可
第3个回答  2021-11-18
相同的后缀字符有什么特征?不清楚你的实际文件/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起双击运行
-------------------------
<# :
cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 将当前目录下多个文件夹里名称末尾具有相同特征后缀字符的文件剪切/移动/归类到同一个新的文件夹里
set #=Any question&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$b=[Convert]::FromBase64String("IC0tPiA=");
$c=[Text.Encoding]::Default.GetString($b);
$newpath="#result";
$path=get-item -liter ".";
$folders=@(dir -literal $path|?{($_.Name -ne ($newpath -replace '^.*\\|\\$','')) -and ($_ -is [System.IO.DirectoryInfo])});
for($i=0;$i -lt $folders.length;$i++){
$files=@(dir -literal $folders[$i].FullName -recurse|?{$_ -is [System.IO.FileInfo]});
for($j=0;$j -lt $files.length;$j++){
$m=[regex]::match($files[$j].BaseName, '[^-]+-[^-]+$');
if($m.Success){
$newfolder=$newpath.trimend('\')+'\'+$m.groups[0].value;
if(-not (test-path -literal $newfolder)){[void][IO.Directory]::CreateDirectory($newfolder)};
$files[$j].FullName.Substring($path.FullName.length)+$c+$newfolder;
}
}
}追问

比如这个是把同名的文件分类,但是我需要的是比如:AA文件夹有(zz-202101-001,az-202101-002),BB文件夹有(zb-202101-001,at-202101-002),CC文件夹有(vb-202101-001,abt-202101-002),它们都有相同的数字后缀比如202101-001,把三个文件夹相同后缀

的文件放到自建立文件夹下文件名为后缀

追答

按运行代码后窗口标题栏中的提示联系我

第4个回答  2021-11-18
在文件分类文件夹下创建一个excel,在excel中创建一个宏,编辑宏,输入以下代码:
Sub 宏1()

Dim MyFile As Object

On Error Resume Next

Set MyFile = CreateObject("Scripting.FileSystemObject")

MyFile.MoveFile ThisWorkbook.Path & "\*" & "202003-003.*", "F:\文件分类\202003-003\"

Set MyFile = Nothing

MsgBox "OK!"

End Sub '
上面的路径和文件名根据自己的需求更改成正确的文件名和正确的路径就可以。然后执行宏,就完成文件的批量移动了。
第5个回答  2021-11-18
用excel的vba可以完成的。追问

我想看看批处理怎么实现,请问,你会吗?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网