2012-02-08 148 views
0

我在一個目錄中有250.000個文件。
這些文件都在格式將文件批量複製到與文件名匹配的新目錄

1a.jpg 
1b.jpg 
1c.jpg 

...並上升到1f.jpg那麼這個數是由一個

2a.jpg 
2a.jpg 
2c.jpg 

增加...等等。

現在我想將所有以1開頭的文件複製到一個名爲1的新目錄中,
以2開頭的所有文件到目錄2等等。

任何人都可以幫忙嗎?

回答

0

你可以試試這個「老土」。BAT批處理文件,如果你想:

@echo off 
setlocal EnableDelayedExpansion 
for %%f in (*.jpg) do (
    set dir=%%~Nf 
    set dir=!dir:~0,-1! 
    if not exist !dir! md !dir! 
    copy %%f !dir! 
) 

複製此批處理文件所在的目錄文件駐留並執行它。它將創建同一級別的新目錄,但您可以輕鬆修改此目錄。

+0

這與我想要的完全一樣!非常感謝 – user1197199 2012-02-09 09:27:18

3

集團所有通過的第一個字符的文件,然後各組複製到目標文件夾:

Get-ChildItem -Filter *.jpg | Group-Object {$_.Name[0]} | Foreach-Object { $_.Group | Copy-Item -Destination "C:\test\$($_.Name)" } 

編輯:這應該更快地執行:

Get-ChildItem *.jpg | Copy-Item -Destination { "C:\test\$($_.Name[0])" } 
+0

它不起作用。是我的文件應該在哪裏的C:\測試? – user1197199 2012-02-08 14:46:12

+0

c:\ test是所有目標文件夾應存在的位置。 – 2012-02-08 14:54:33

1

嘗試:

dir -filter *.jpg | % { Copy-Item -PATH $_ -DESTINATION .\$($_.BaseName.ToCharArray()[0]) } 

這樣,目標文件夾必須存在!

+0

我創建了一些目錄1,2和3,但運行命令時沒有任何反應 – user1197199 2012-02-08 14:47:34

+0

執行命令時是否在源文件夾中? – 2012-02-08 14:56:04

3

如果你有一個目錄名ň [A-F] .JPG 250000頁的文件,我希望ň去從1至41,667你想有41,667目錄數6個JPG文件。如果是這樣的話,這裏是我的解決方案,一個涉及多一點:

  • 首先,去掉字母(A-F)和擴展從 項目的全名的.jpg得到的目標文件夾。
  • 接下來檢查目標文件夾是否存在,如果它不是 創建。
  • 最後,該項目被複制到目標文件夾。

    Get-ChildItem *.jpg | ForEach-Object { 
    $destination = $_.FullName -replace '[a-f]\.jpg' 
    if (-not (Test-Path -Path $destination -PathType Container)) { 
        $null = New-Item -Path $destination -ItemType directory 
    } 
    Copy-Item -Path $_.FullName -Destination $destination 
    } 
    
相關問題