2013-04-25 93 views
1

bat文件是否可以通过文件夹搜索并查看文件名并仅移动具有该名称或该名称的一部分的文件?然后将它们移动到指定位置。 例如:批处理文件基于其名称的一部分移动文件

Parent Folder 
Arrow0273.text 
Arrow0314.text 
Spear083112.text 
Spear0832.text 
Sheild087.txt 
Sheild87.txt 

Move only the files with “Arrow” in their name into folder location “A”. 
ect... 

谢谢你们! 编辑: 发现这一点,但不知道,如果这是我在找的东西,说实话,不知道该代码如何工作。 Move files to directories based on some part of file name?

回答

2

副本支持通配符因此,所有你需要做的是:

copy Arrow* A

+1

我真的不想复制文件只将它们移动到一个新的位置。我可以将“复制”更改为“移动”并仍然有效吗? – 2013-04-25 06:23:28

+1

只是累了,它的作品!谢谢! – 2013-04-25 06:27:09

+0

与'move'命令一样... – npocmaka 2013-04-25 06:48:24

3

也许这样的事情?我前一段时间在这里发现了这个,我一直都在使用它。它会根据文件名和文件类型将文件移动到文件夹中。如果文件夹不存在,它将在批处理文件的当前位置创建文件夹。如果该文件夹已经存在,它将简单地将其移动到该文件夹​​。

@echo off &setlocal 
for /f "delims=" %%i in ('dir /b /a-d *.text') do (
set "filename1=%%~i" 
setlocal enabledelayedexpansion 
set "folder1=!filename1:~0,1!" 
mkdir "!folder1!" 2>nul 
move "!filename1!" "!folder1!" >nul 
endlocal 
) 

的“.PDF”在第2行可以被改变,以指定的文件类型。您可以使用“。*”移动所有文件类型,但这也会移动.bat文件和文件夹。

“〜0,1!”第5行确定查看哪些字符以确定文件夹名称。第一个数字决定了它开始查看哪个字符(0开头,1是从头开始的1个字符,等等)。第二个数字决定了它看起来有多少个字符。如果它更改为2,它将查看文件中的前2个字符。

目前它只设置为仅查看第一个字符并仅移动.text文件。对于您示例中的文件,它会将名为“A”的文件夹的所有“箭头”文件以及所有“矛”文件移动到名为“S”的文件夹。 “Shield”文件将保留在原来的位置,因为它们的扩展名是.txt,而不是.text。如果将“.text”更改为“ .t *”,则会将.txt和.text文件移动到“A”和“S”文件夹中。

相关问题