2015-10-15 108 views
0

我擁有大約6000個文件夾,裏面有圖像,每個文件夾都有不同數量的圖像,其中一些圖像也有0個圖像。 現在我需要在每個文件夾內創建2個子文件夾,用名稱「中」和「大拇指」命名這些新的子文件夾,並在這些子文件夾內複製父文件夾中存在的圖像。例如:假設我有一個名爲1000的文件夾,裏面有10個圖像,直到10.jpg才命名爲1.jpg,2.jpg,3.jpg等。我需要在名爲1000的文件夾內創建名爲「medium」的文件夾和名爲「thumbs」的文件夾,並將文件夾1000中存在的圖像複製到新的子文件夾「1000/medium」和「1000/thumbs」。我需要用6000個文件夾來做這件事。任何人都可以幫助我創建批處理例程來執行此操作?批量創建子文件夾並將父圖像文件複製到新的子文件夾

我想寫這樣的代碼:

for /r "c:\folders" %%a in (.) do (pushd %%a -iname '*.jpg' -execdir \ bash -c 'mkdir -p thumbs medium; mv *.jpg medium; cp -t thumbs medium/*' \;) popd) 

回答

0

好做...根據你comments之一,你想有一個Windows批處理文件。你將它與bash(Linux)混合在一起。

無論如何,for是一個不錯的選擇。但是,您需要使用/D開關來枚舉目錄/R只是告訴for也在子目錄中搜索項目,但在你的情況下,這是不必要的,因爲你有一個扁平的目錄結構(所有感興趣的目錄都直接位於C:\folders\)。

下面的代碼應該做你在找什麼:

for /D %%D in ("C:\folders\*.*") do (
    pushd "%%~D" 
    mkdir "medium" 
    mkdir "thumbs" 
    copy "*.jpg" "medium\" 
    copy "*.jpg" "thumbs\" 
    popd 
) 

如果您想要刪除原始文件,通過move替換第二copy命令。

-1

嘗試find -execdir

find path/to/6000/folders -iname '*.jpg' -execdir \ 
    bash -c 'mkdir -p thumbs medium; mv *.jpg medium; cp -t thumbs medium/*' \; 
+0

你好,非常感謝。我想問一下以下問題,我有大約6000個文件夾,您編寫的代碼是通過打開位於特定文件夾內的6000個文件夾中的每個文件夾並在每個文件夾下創建「中等」和「大拇指」來工作的?或者我應該運行該文件夾的文件夾?非常感謝。可以說我有路徑c:/文件夾下的6000個文件夾,我應該如何使用腳本? –

+0

'find c:/ folders -iname'* .jpg'-execdir \ bash -c'mkdir -p thumbs medium; mv * .jpg medium; cp -t thumbs medium/*'\; ' –

+0

另外,我試圖理解'FOR'命令,也許我應該在腳本中添加這樣的內容,以便在每個子文件夾中運行命令?你怎麼看? 'FOR/D%d IN(*。*)DO @ECHO%d' –

相關問題