2013-10-10 2 views
1

20 개의 파일이있는 폴더가 있으며 Windows 탐색기와 비슷한 방식으로 정렬하려고합니다. 나는 모든이 파일은과 같이 블록 크기의 접두사가 있습니다자연스럽게 일괄 파일 정렬

1024KB.log 
32KB.log 
64KB.log 
4KB.log 
256KB.log 
512KB.log 

하지만 일괄 적으로 정렬 할 때, 그것은 단지 그 첫 번째 숫자에서 보이는 지금처럼 정렬 :

1024KB.log 
256KB.log 
32KB.log 
4KB.log 
512KB.log 
64KB.log 

내가 원하는 가장 작은 블록 크기에서 가장 큰 블록 크기로 정렬 할 수 있습니다. 어떤 아이디어?

편집 : 또한 파일 이름을 사용하고 문자열을 만드는 다른 스크립트를 호출하기 때문에 파일 이름의 무결성을 유지해야합니다.

+0

당신은 숫자 정렬로 [이 질문의 대답 (http://stackoverflow.com/questions/4399475/unformat-disk-size-strings) 결합 할 수 있습니다 . – Danstahr

답변

3

Take Command - CMD.EXE 대체품은 자연 정렬 기능이 있습니다.

파일 이름에 0을 덧붙일 수 있다면 정상적인 정렬로 되돌릴 수 있습니다.

이 코드는 그 수치 분류 반환합니다

@echo off 
type nul>1024KB.log 
type nul>32KB.log 
type nul>64KB.log 
type nul>4KB.log 
type nul>256KB.log 
type nul>512KB.log 

setlocal enabledelayedexpansion 
for %%a in (*.log) do (
set num=0000000000%%a 
set num=!num:~-14! 
set $!num!=%%a 
) 
for /f "tokens=1,* delims==" %%a in ('set $0') do echo %%b 
pause 
+0

이 질문에 대해서는 약간의 의문이 있지만, 파일 이름이'''20M.log'''와 같은 것이라면 어떨까요? – Danstahr

+0

@Danstahr 그게 유효한 지적입니다. 일부 파일 이름에 K가 접미사로 표시되고 원하는 목록에서 KB로 표시되는 것으로 나타났습니다. – foxidrive

+0

좋은 지적입니다. 위에 게시 한 변환은 작동하지만 숫자 정렬을 사용하는 방법은 무엇입니까? 똑같은 일을하지 않겠습니까? – user2847371