2013-04-25 81 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」文件夾中。

相關問題