2

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... 

多谢你们!编辑:找到这个但不确定它是否是我正在寻找的,老实说,不确定该代码是如何工作的。根据文件名的某些部分将文件移动到目录?

4

2 回答 2

4

也许是这样的?不久前我在这里找到了这个,我一直在使用它。它将根据文件名和类型将文件移动到文件夹中。如果该文件夹不存在,它将在批处理文件的当前位置创建该文件夹。如果文件夹已经存在,它只会将其移动到该文件夹​​。

@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
)

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

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

目前它被设置为只查看第一个字符并且只移动 .text 文件。对于您示例中的文件,它将移动名为“A”的文件夹的所有“Arrow”文件,并将所有“Spear”文件移动到名为“S”的文件夹中。“屏蔽”文件将保留在原处,因为它们的扩展名是 .txt,而不是 .text。如果您将“ .text”更改为“ .t*”,它会将 .txt 和 .text 文件移动到“A”和“S”文件夹中。

于 2014-11-13T19:25:47.883 回答
2

copy 支持通配符,所以您需要做的就是:

copy Arrow* A

于 2013-04-25T06:17:53.203 回答