확장 기능 장애로 여전히 고통 받고 있습니다. 로그 파일의 시작 부분에서 GTR 100 줄을 지우려고합니다. 다음과 같이 작동해야하는 것처럼 보이지만 표시된 것처럼 for/f "건너 뛰기"가 거의 작동하지 않습니다. 누군가 여기서 친절하게 무엇이 잘못되었는지 설명 할 수 있습니까? 고맙습니다!/f를 사용하여 텍스트 파일의 시작 부분에서 줄을 건너 뛰는 방법
@echo off
SETLOCAL EnableDelayedExpansion
Set "logfile=abc.log"
rem ~ Get line count and exit if not greater 100
For /f %%G in ('Type "!logfile!"^|Find "" /v /c') Do SET /a linecount=%%G
If not %linecount% GTR 100 exit /b
rem ~ get number lines to skip
set /a skiplines=!linecount! -100
echo. &echo logfile=%logfile%, linecount=%linecount%, skiplines=%skiplines%
:: Above displays: logfile=abc.log, linecount=243, skiplines=143
: 여기가 문제 야 :
rem ~ skip the first %skiplines% in file and write remaining to temp
for /f "skip=!skiplines! delims=*" %%H in ("!logfile!") do echo %%H >>newfile.tmp
:: 위 오류를 줄 : "! skiplines을 delims을 = *".이 시간에 예상치 못한 "
for /f "skip=%skiplines% delims=*" %%H in ("!logfile!") do echo %%H >>newfile.tmp
:: (예상보다 위에 newfile.tmp에 0을 씁니다)
하나의 솔루션 - - - - - - - - - - - - - - - - -
이 한 줄짜리 해결책을 승인 된 것과 함께 눈에 띄게 표시하고 있습니다. 대답. @Magoo 응답에 포함 된 코드에는 usebackq이 필요합니다. 이 작품 :
for /f "usebackqskip=%skiplines% delims=*" %%H in ("!logfile!") do echo %%H>>newfile.tmp
원본 코드가 잘못된 파일 var를 보여주었습니다 (이전 코드를 올리는 중 오류가 발생했습니다.).! skiplines! Magoo와 ths가 지적한 것처럼 오류를 제기하고있었습니다. 그러나 * 수정 된 파일 var (logfile)을 사용하고 % skiplines %를 사용하더라도 For/f "skip"은 tmp 파일에 쓰지 않습니다. * – sjoy
게시물의 끝 부분에있는 솔루션으로 코드가 작동하고 제목에 대한 질문에 답합니다. @ 마구 (Magoo)의 대답은 "누군가 여기서 잘못된 점을 설명 할 수 있습니까?"라고 대답했습니다. – sjoy