2016-08-26 3 views
1

나는 다소 흥미로운 delima가 있습니다. 디렉토리에서 최신 7 개의 파일을 찾으려고합니다. 명령 프롬프트에서 dir /o-d /a-d /b|find /n /v ""을 방금 실행하면 최상위 7 개 파일이 반환되지만 배치 파일의 for 루프 내에서 실행하면 그렇지 않습니다. 그들은 순서가 맞지 않습니다. 내가 사용하는 코드는 다음과 같습니다 나는 최신 7 개 파일을 얻을 수있는 for /l 루프와 숫자를 사용할 계획입니다하지만 난 알아낼 때까지 왜 이런 일이 없습니다Dir은 for 루프의 최신 파일을 반환하지 않습니다.

@echo off 
setlocal 

cd /d %~dp0 

for /f "tokens=*" %%a in ('dir /o-n /b /a-d^|find /n /v ""') do (
    echo %%a 
) 

. 다음은 차이점을 보여주는 파일입니다.

F:\Scripts\Batch\Test\Check7>dir /o-d /a-d |find /n /v "" 
[1] Volume in drive F is home 
[2] Volume Serial Number is 0101-23B6 
[3] 
[4] Directory of F:\Scripts\Batch\Test\Check7 
[5] 
[6]08/26/2016 09:58 AM    256 Check7.cmd 
[7]08/25/2016 05:48 PM    544 RexxTable.txt 
[8]08/25/2016 05:48 PM   115,668 FCSBalanceFile.txt 
[9]08/25/2016 05:48 PM   33,051 FCSFlatFile.txt 
[10]08/25/2016 05:48 PM   1,475,304 ITF_MT_Deloitte_CRR.txt 
[11]08/25/2016 05:48 PM    92 ITF_LOB_Strike.txt 
[12]08/25/2016 05:48 PM   387,673 ITF_LOB_Daily.txt 
[13]08/25/2016 05:48 PM   20,944 DDAFlatFile.txt 
[14]08/24/2016 05:46 PM   115,668 FCSBalanceFile-08252016.txt 
[15]08/24/2016 05:46 PM   22,894 FCSFlatFile-08252016.txt 
[16]08/24/2016 05:46 PM   19,448 DDAFlatFile-08252016.txt 
[17]08/23/2016 05:49 PM   115,668 FCSBalanceFile-08242016.txt 
[18]08/23/2016 05:49 PM   31,730 FCSFlatFile-08242016.txt 
[19]08/23/2016 05:48 PM   22,440 DDAFlatFile-08242016.txt 
[20]08/22/2016 05:50 PM   115,560 FCSBalanceFile-08232016.txt 
[21]08/22/2016 05:50 PM   38,748 FCSFlatFile-08232016.txt 
[22]08/22/2016 05:49 PM   31,042 DDAFlatFile-08232016.txt 
[23]08/19/2016 05:48 PM   115,560 FCSBalanceFile-08222016.txt 
[24]08/19/2016 05:48 PM   22,242 FCSFlatFile-08222016.txt 
[25]08/19/2016 05:48 PM   18,326 DDAFlatFile-08222016.txt 
[26]08/18/2016 05:49 PM   115,560 FCSBalanceFile-08192016.txt 
[27]08/18/2016 05:49 PM   34,588 FCSFlatFile-08192016.txt 
[28]08/18/2016 05:48 PM   20,196 DDAFlatFile-08192016.txt 
[29]08/17/2016 05:49 PM   115,560 FCSBalanceFile-08182016.txt 
[30]08/17/2016 05:49 PM   22,507 FCSFlatFile-08182016.txt 
[31]08/17/2016 05:49 PM   19,448 DDAFlatFile-08182016.txt 
[32]08/16/2016 05:49 PM   115,452 FCSBalanceFile-08172016.txt 
[33]08/16/2016 05:49 PM   30,712 FCSFlatFile-08172016.txt 
[34]08/16/2016 05:49 PM   26,180 DDAFlatFile-08172016.txt 

F:\Scripts\Batch\Test\Check7>Check7.cmd 
[1] Volume in drive F is home 
[2] Volume Serial Number is 0101-23B6 
[3] 
[4] Directory of F:\Scripts\Batch\Test\Check7 
[5] 
[6]08/25/2016 05:48 PM    544 RexxTable.txt 
[7]08/25/2016 05:48 PM   1,475,304 ITF_MT_Deloitte_CRR.txt 
[8]08/25/2016 05:48 PM    92 ITF_LOB_Strike.txt 
[9]08/25/2016 05:48 PM   387,673 ITF_LOB_Daily.txt 
[10]08/24/2016 05:46 PM   22,894 FCSFlatFile-08252016.txt 
[11]08/23/2016 05:49 PM   31,730 FCSFlatFile-08242016.txt 
[12]08/22/2016 05:50 PM   38,748 FCSFlatFile-08232016.txt 
[13]08/19/2016 05:48 PM   22,242 FCSFlatFile-08222016.txt 
[14]08/18/2016 05:49 PM   34,588 FCSFlatFile-08192016.txt 
[15]08/17/2016 05:49 PM   22,507 FCSFlatFile-08182016.txt 
[16]08/16/2016 05:49 PM   30,712 FCSFlatFile-08172016.txt 
[17]08/25/2016 05:48 PM   33,051 FCSFlatFile.txt 
[18]08/24/2016 05:46 PM   115,668 FCSBalanceFile-08252016.txt 
[19]08/23/2016 05:49 PM   115,668 FCSBalanceFile-08242016.txt 
[20]08/22/2016 05:50 PM   115,560 FCSBalanceFile-08232016.txt 
[21]08/19/2016 05:48 PM   115,560 FCSBalanceFile-08222016.txt 
[22]08/18/2016 05:49 PM   115,560 FCSBalanceFile-08192016.txt 
[23]08/17/2016 05:49 PM   115,560 FCSBalanceFile-08182016.txt 
[24]08/16/2016 05:49 PM   115,452 FCSBalanceFile-08172016.txt 
[25]08/25/2016 05:48 PM   115,668 FCSBalanceFile.txt 
[26]08/24/2016 05:46 PM   19,448 DDAFlatFile-08252016.txt 
[27]08/23/2016 05:48 PM   22,440 DDAFlatFile-08242016.txt 
[28]08/22/2016 05:49 PM   31,042 DDAFlatFile-08232016.txt 
[29]08/19/2016 05:48 PM   18,326 DDAFlatFile-08222016.txt 
[30]08/18/2016 05:48 PM   20,196 DDAFlatFile-08192016.txt 
[31]08/17/2016 05:49 PM   19,448 DDAFlatFile-08182016.txt 
[32]08/16/2016 05:49 PM   26,180 DDAFlatFile-08172016.txt 
[33]08/25/2016 05:48 PM   20,944 DDAFlatFile.txt 
[34]08/26/2016 09:58 AM    256 Check7.cmd 
+3

일괄 처리 파일은 이름별로 정렬됩니다 : '/ o-n'반면 수동으로 입력 한 명령은 날짜별로 처리합니다. – wOxxOm

+0

@WoxxOm Lol. 이봐. 그것은 id10t 오류입니다. 그것을 지적 주셔서 감사합니다. 답변을 게시하면 답변 해 드리겠습니다. –

+0

문제는 간단한 오타이기 때문에이 사이트에 아무런 가치도 추가하지 않으므로 답변 할 가치가 없습니다. 오히려 그것이 닫혀 있어야합니다. (제가 투표 한 것입니다.) ... 어떤 주제에 관한이 도움말 항목을 참조하십시오 : [여기에 어떤 주제가 있습니까?] (http://stackoverflow.com/help/) on-topic) – aschipfl

답변

1

다음은 완성 된 배치 파일입니다.

for /f "tokens=1,2 delims=[]" %%a in (
    'dir /o-d /a-d /b^|find /n /v ""') do (
    echo %%~nxtb>>%~n0.txt 
    if %%a geq 7 goto :out 
) 
:out