2016-02-05 69 views
0

我一直在尋找解決方案,並找到了類似的解決方案,但它們要麼具有固定長度的文件名,要麼已用於對文件內的文件進行排序文件夾,而不是移動它們。使用批文件將文件移動到基​​於名稱和課程代碼的文件夾

什麼,我試圖做當工作人員的地方,例如,在的車程文件命名爲:

Bloggs Joe AHC20410 Student Forms.pdf 

批處理文件(在一天的某些時間運行)會將文件移動到^h驅動,到該文件夾​​:

H:\Student Records Current\Bloggs Joe AHC20410 

所以,僅僅例如的車程看起來是這樣的,當批號F ile運行:

Bloggs Joe AHC20410 Student Forms.pdf 
Bloggs Joe AHC20410 Evidence.jpg 
Doe Jane AHC31010 Workbook.doc 
Doe Joe AHC20410 Images.png 

任何幫助將不勝感激!

+0

請參閱'move /?'。將空格用引號括起來。輸入'help'獲取命令列表。在命令提示符下查看http://stackoverflow.com/questions/31820569/trouble-with-renaming-folders-and-sub-folders-using-batch瞭解一些約定。 – 2016-02-05 05:32:59

回答

0
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
SET "destdir=U:\destdir" 
FOR /f "delims=" %%d IN (
    'dir /b /ad "%destdir%\*ahc*" 2^>nul ^|findstr /i /r /c:"AHC[0-9][0-9][0-9][0-9][0-9]"' 
) DO (
FOR /f "delims=" %%a IN (
    'dir /b /a-d "%sourcedir%\%%d*" 2^>nul ^|findstr /i /r /c:" AHC[0-9][0-9][0-9][0-9][0-9] "' 
) DO (
    ECHO(MOVE "%sourcedir%\%%a" "%destdir%\%%d\" 
) 
) 

GOTO :EOF 

你需要改變的sourcedirdestdir設置以適合你的情況。

所需的MOVE命令僅爲ECHO用於測試目的。 確認命令正確後,將ECHO(MOVE更改爲MOVE以實際移動文件。追加>nul以抑制報告消息(例如,1 file moved

假定目標目錄已經存在。

基本上,找到所有包含ahc的目錄名稱,並篩選爲ahc followed by 5 numerics以獲得更好的效果。將這些字符串分配給%%d

然後,對於找到的每個%%d,查找源文件,這些文件的起始位置爲%%d幷包含字符串ahc followed by 5 numerics,並且前後都有一個空格。

把這些名字拼在一起並顯示結果...

+0

非常感謝@Magoo花時間編寫代碼,我的批處理文件技能非常生疏。 當代碼找到源代碼和目標代碼時,我感到困惑了一些,但沒有複製......但最終發現了一個缺失的')'。完美的作品! –

相關問題