2012-12-28 31 views
1

我想在某些文件夾中的所有文件移動到新創建的文件夾中的同一個文件夾。爲了更容易理解,請參見下面的示例(輸入被示出左,輸出右示出):MOVE批量文件

C:\1\A\file1.tif   C:\1\A\Named\file1.tif 
     file2.tif       file2.tif 
     file3.tif  ==>     file3.tif 
C:\1\B\file1.tif   C:\1\B\Named\file1.tif 
     file2.tif       file2.tif 
     file3.tif       file3.tif 

在上面的例子中,我只示出每一個文件夾中的前三個文件,但總數量可以不同(通常每個文件夾有1000個文件)。此外,我只顯示了兩個文件夾(A和B),但文件夾的總數也可能不同(通常約10個文件夾)。最後,我只顯示文件夾'1',但這些文件夾的數量也可能有所不同(通常爲'1'到'10')。所以我正在尋找一個腳本,可以獨立於文件或文件夾的數量來執行這些操作,而不依賴於文件夾/文件的名稱(我僅選擇'1','A'和'file1.tif'作爲示例)。

這個想法是,現在我必須在文件所在的每個文件夾(上面的例子中的'A'和'B')中手動創建空文件夾(在上面的例子中稱爲'Named')。然後我必須手動將所有文件移動到新創建的文件夾'Named'中。我必須爲所有文件夾(大約100)執行此操作。如果我只需要做一次,我就可以手動完成整個過程,但問題是我必須多次執行此過程:-)。所以自動化會節省很多時間。

有誰知道一個腳本,可以做到這一點?非常感謝!

回答

0

全面的測試之後,這個偉大的工程。但是,由於它是很多文件,因此在使用實際數據之前,可能需要設置一個小測試環境(如在您的示例中),首先使用它。

setlocal enabledelayedexpansion 
cd C:\rootfolder 
for /f "tokens=*" %%a in ('dir /s /b /a:d') do (
attrib "%%a\*.*" | find "File not found" 
if !errorlevel!==1 (
if not exist "%%a\Named" md "%%a\Named" 
xcopy "%%a\*.*" "%%a\Named" 
del "%%a\*.*" /f /q 
) 
) 
+0

嗨巴厘島,謝謝你的劇本。我通過將第一行更改爲「cd C:\ 1」來測試腳本。這工作完美。但正如我在第一篇文章中提到的,'1'文件夾不是唯一的文件夾,通常有10個文件夾(如1到10)。當我通過「cd C:\」替換腳本中的第一行時(假設除了文件夾1到文件夾10以外,C盤中沒有其他文件夾),該腳本仍然有效,但我得到了另外一個名爲'Named '在'1'文件夾中(所以C:\ 1 \ Named)。 9個文件夾('2'到'10')也是如此。但這不是一個大問題。 – Loek

+0

@Loek不用擔心,我把rootfolder路徑作爲一種佔位符的文件夾所有文件夾中(如您用C的例子:有沒有其他的文件夾)所以,除非你有某種形式的根文件夾中很難如果你知道我的意思,你可以區分你想要的和不想要的。當我測試時,我確實發現了這個問題,但我認爲我已經修復了它,我會做更多的調試:) –

+0

我剛測試了我的腳本,但它對我來說似乎很好。我剛創建了一個'test'文件夾,下面有2個文件夾,'a'和'b',每個文件夾都有2個文本文件,並且工作正常。是否有可能創建一個基礎文件夾並將所有內容移動到那裏並查看它是否有效? –

1

測試了一下,這可能工作,在命令文件

做一個cmd文件與這些線路

for /r %%a in (*.*) do call :singlecopy %%a 
goto :eof 

:singlecopy 
set src=%~p1 
set dst=%~p1NAMED 
set file=%~n1%~x1 
rem replace NAMED in src with nothing 
set srctst=%src:NAMED=% 
rem if src and srctst are still the same, copy 
if %srctst%==%src% robocopy %src% %dst% %file% /move /create 
goto :eof 
+0

謝謝您的建議。我嘗試了CMD(管理員)的代碼,但沒有奏效。我得到了以下結果(只顯示第一次迭代):pastebin.com/3VtnWpPE http://puu.sh/1Hdh0 – Loek

+0

固定的客源目的​​地和文件選項 – rene

+0

我嘗試了新的腳本,並做了一些。但不是正確的。我結束了在此位置的文件:C:\ 1 \名爲\名爲\名爲\名爲\名爲\名爲\名爲\ ... \名爲\名爲\名爲\名爲\ file1.tif等(共42個NAMED文件夾)。又見這個截圖:http://puu.sh/1HBBQ.png同爲C:\ 2 \名爲\名爲\ ... – Loek