2013-06-27 61 views
0

我有一堆名爲Ex date 20132706201323062013220520133004的文件夾。我如何使用通配符批量移動文件夾

我想將這些文件夾移動到那裏相應的文件夾,我可以只寫1000行,但我想添加通配符。

這是我目前在做什麼:

Move \\folder1\20132706 \\folder1\june2013 
Move \\folder1\20132306 \\folder1\june2013 
Move \\folder1\20132205 \\folder1\May2013 
Move \\folder1\20133004 \\folder1\April2013 

這就是我想要做的:

Move \\folder1\??????06 \\folder1\june2013 
Move \\folder1\??????05 \\folder1\may2013 
Move \\folder1\??????04 \\folder1\april2013 

但是我沒有使用通配符成功的。

我在做什麼錯了?

+0

Windows批處理或Linux? – hexafraction

+0

你需要研究HEAVILY到'forfiles','/ r'和'for/f'命令。所有這些在進入複雜批處理腳本時都非常有用。 – Monacraft

+0

它是一個Windows批處理 – user2446846

回答

1
@ECHO OFF 
SETLOCAL 
SET localroot=u:\folder 
FOR /f %%i IN (
    'dir /ad /b "%localroot%" ^|findstr /r "^[0-9]*$"' 
) DO CALL :movedir %%i 

GOTO :EOF 

:movedir 
:: ensure destination is exactly 8 chars long 
SET "dest=%1" 
SET dest=%dest:~7% 
IF NOT DEFINED dest GOTO :EOF 
SET dest=%dest:~1% 
IF DEFINED dest GOTO :EOF 

SET "dest=%1" 
:: convert month to text 
SET "month=" 
SET "dest="&FOR %%i IN (01 january 02 february 03 march etc etc 12 december) DO IF NOT DEFINED dest (
IF DEFINED month SET dest=%%i%dest:~0,4% 
IF %dest:~-2%==%%i SET month=Y 
) 

ECHO MOVE %localroot%\%1 %localroot%\%dest% 

GOTO :eof 

這應該做必要的工作 - 所有你需要做的是改變了localroot定義,填寫在指定格式的日期列表和檢查刪除ECHO激活MOVE後。

遍歷目錄,篩選出只有那些純數字(任意數量的起點和終點之間的數字組成)

檢查名字正好是8長,轉換和重新輸入目的地名稱,並完成了!

相關問題