2012-02-08 3 views
0

나는 하나의 디렉토리에 250.000 개의 파일을 가지고 있습니다.
파일은 형식파일을 파일 이름과 일치하는 새 디렉토리에 일괄 복사합니다.

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

에 모두 ... 그리고 수가 1

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

씩 증가 ... 등등되어 다음 1f.jpg까지 간다.

이제 1로 시작하는 모든 파일을 1,
2라는 디렉토리로 시작하는 모든 파일에 복사하는 등의 작업을 수행합니다.

아무도 도와 드릴 수 있습니까?

답변

0

원하는 경우이 "구식".BAT 배치 파일을 시도 할 수 있습니다. 같은 레벨에 새로운 디렉토리를 만들지 만 쉽게 수정할 수 있습니다.

+0

정확히 내가 원하는 것처럼 작동합니다! 많은 감사 – user1197199

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

+0

c : \ test는 모든 대상 폴더가 있어야하는 곳입니다. –

1

시도 :

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

이렇게하면 대상 폴더가 반드시 존재해야합니다! 당신은 하나의 디렉토리 이름 N [A-F] .JPG에서 25 만 개 파일이있는 경우

+0

나는 일부 디렉토리 1, 2, 3을 생성하지만 난 당신이 명령을 실행 소스 폴더에있는 명령 – user1197199

+0

을 실행할 때 아무 반응이 없습니다? –

3

, 나는 N 1에서 41,667로 이동 기대 당신은 41,667 디렉토리에게 각각은 6 개 JPG 파일을 갖고 싶어. 이런 경우, 여기 내 솔루션은 조금 더 복잡입니다 :

  • 첫째, 문자 (A-F)과 대상 폴더를 얻기 위해 항목의하면 FullName에서 .JPG 확장자를 제거합니다. 대상 폴더가 존재하는 경우 그것이 만들어 하지 않는 경우
  • 다음 그것은 검사한다.
  • 마지막 항목이 대상 폴더로 복사됩니다. 디렉토리에

    @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! 
    ) 
    

    복사이 배치 파일을 어디에 파일이 상주하고 실행 :

    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 
    } 
    
관련 문제