2013-05-15 4 views
1

이렇게 나에게 조금 놀랐습니다. 파일 크기를 기반으로 자신의 폴더로 이동하는 배치 파일을 작성하려고합니다. 이 작업은 수동으로 시작했으나 30 분 후에 몇 시간 동안 작업을 끝내기 위해 .bat 파일을 만드는 방법을 배우려고했습니다. 그러나 Google.com에서 도움을 얻지 못했습니다. 일반적으로 코드를보고 약간만 편집하면 배치가 여전히 매우 혼란스럽고 내가 찾고있는 것과 비슷한 것을 찾지 못했습니다.파일 크기에 따라 파일을 이동하는 일괄 파일

지금까지 나는 폴더 제목 "32"로 859 32kb 파일을 옮겼습니다. 모든 43kb의 64kb 파일, 91 개의 96kb 파일, 30 개의 128kb 파일, 14 개의 160kb 파일, 17 192kb 파일, 9 224kb 파일, 그리고 나서 258kb-1376kb는 모두 약 912mb까지 기하 급수적으로 증가하기 전에 각각 4-5 개 정도를 가지고 있습니다. 그리고 640kb에서 멈추었습니다.

패턴이 있으므로 파일 크기가 큰 폴더로이 파일을 옮기려면 .bat 코드가 필요합니다. 나는 루프 내가 같이 보일 것입니다 원하는 일을, 또 다른 코딩 언어로 상상

이러한 파일의 이동은 일괄 주석 다음으로 수행 할 수
dim strFS as String 
strFS = "file".filesize 
move "file" to /"strFS" 

답변

0

:

@echo off 
setlocal EnableDelayedExpansion 
for %%F in (*) do (

    rem Divide file size by 32768 
    set /A "BlockSize=%%~zF/32768" 
    rem Calculate remainder of above division. 
    set /A "Remainder=!BlockSize!*32678-%%~zF" 
    rem Multiply result with 32 and round up to 32, 64, 96, 128, ... 
    if "!Remainder!"=="0" (set "Add=0") else (set "Add=32") 
    set /A "FolderName=BlockSize*32+Add" 

    rem Move the file to appropriate directory which fails if the 
    rem directory does not already exist. In this case create the 
    rem directory and execute move command once again. 
    move "%%~nxF" !FolderName!\ 2>nul 
    if errorlevel 1 (
     md !FolderName! 
     if not errorlevel 1 (
      move "%%~nxF" !FolderName! 
     ) else (
      echo Could not create directory !FolderName! for file %%~nxF 
     ) 
    ) 
) 
endlocal 

하는 배치 파일이 될 수 없습니다 그것은 현재 좋은 작업이 아니기 때문에 현재 작업 디렉토리에 있습니다. 대한 명령의

도움말 경우 MD, 이동, 설정SETLOCAL 명령 프롬프트를 열고 파라미터 /?가 추가 또는 파라미터로 해당 명령을 입력하여 판독 할 수있다 명령 후 예를 들어 for /? 또는 help for과 같은 도움을 요청하십시오.

관련 문제