문제

이 구조를 기반으로 최대 4개의 파일이 있습니다(접두사는 날짜임).

  • 0830파일이름.txt
  • 0907파일이름.txt
  • 0914파일이름.txt
  • 0921파일이름.txt

가장 최근 파일(0921filename.txt)을 열고 싶습니다.배치 파일에서 어떻게 할 수 있나요?

감사해요.

도움이 되었습니까?

해결책

이 방법은 실제 파일 수정 날짜를 사용하여 어떤 파일이 최신 파일인지 파악합니다.

@echo off
for /F %%i in ('dir /B /O:-D *.txt') do (
    call :open "%%i"
    exit /B 0
)
:open
    start "dummy" "%~1"
exit /B 0

그러나 이 방법은 알파벳 순서로 마지막 파일(또는 알파벳 역순으로 첫 번째 파일)을 선택하므로 파일 이름이 일관되면 작동합니다.

@echo off
for /F %%i in ('dir /B *.txt^|sort /R') do (
    call :open "%%i"
    exit /B 0
)
:open
    start "dummy" "%~1"
exit /B 0

실제로 어떤 방법이 더 나은지 선택해야 합니다.

다른 팁

이런 질문을 스팸으로 보내서 죄송합니다. 하지만 정말 포스팅하고 싶은 마음이 듭니다. 실제 답변.BATCH 스크립트를 원하는 경우 분석하다 그리고 비교하다 파일 이름에 날짜가 있으면 다음과 같이 사용할 수 있습니다.

@echo off

rem Enter the ending of the filenames.
rem Basically, you must specify everything that comes after the date.
set fn_end=filename.txt

rem Do not touch anything bellow this line.
set max_month=00
set max_day=00

for /F %%i in ('dir /B *%fn_end%') do call :check "%%i"
call :open %max_month% %max_day%
exit /B 0

:check
    set name=%~1
    set date=%name:~0,4%
    set month=%date:~0,2%
    set day=%date:~2,2%
    if /I %month% GTR %max_month% (
        set max_month=%month%
        set max_day=%day%
    ) else if /I %month% EQU %max_month% (
        set max_month=%month%
        if /I %day% GTR %max_day% (
            set max_day=%day%
        )
    )
exit /B 0

:open
    set date=%~1
    set month=%~2
    set name=%date%%month%%fn_end%
    start "dummy" "%name%"
exit /B 0

EXIT 트릭을 사용하는 하나의 라이너:

FOR /F %%I IN ('DIR *.TXT /B /O:-D') DO NOTEPAD %%I & EXIT

편집하다:

@팸:당신 말이 맞아요. 파일이 날짜 순서대로 있다고 가정했지만 명령을 다음과 같이 변경할 수 있습니다.

FOR /F %%I IN ('DIR *.TXT /B /O:-N') DO NOTEPAD %%I & EXIT

그러면 파일 목록이 이름별로 역순으로 정렬됩니다.

여기요...(아무도 나를 이길 수 있기를 바랍니다.)

dir *.txt /b /od > systext.bak 
FOR /F %%i in (systext.bak) do set sysRunCommand=%%i 
call %sysRunCommand%
del systext.bak /Y

아마도 XP 전용일 겁니다.DOS의 막강한 힘을 보십시오.
파일 이름이 아닌 날짜별로 최신 파일 이름을 사용하지만..

최신 파일 이름을 얻으려면 /od를 /on으로 변경하세요.
다른 항목을 정렬하려면 두 번째 줄에 "sort" 명령을 추가하세요.

정규식을 사용하여 관련 정수를 구문 분석하고 비교합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top