Windows 명령 줄 - dir 검색에서 파이프 출력으로 (잘린) 작업


2

이것은 Windows 10입니다.이 질문은 매우 간단합니다.이 작업을 수행하는 데 올바른 구문을 모르겠습니다.

이것은 .log로 끝나는 모든 파일을 나열합니다.

dir /s /p *.log

그러면 파일이 잘립니다.

echo|set /p=>"myfile.log"

내가 뭘하고 싶은 파이프 첫 번째 작업의 출력을 두 번째 작업에 따라서 반환 된 일치하는 파일을 자릅니다. dir. 내가 어떻게 할까?


그래서 당신은 가질 수있는 모든 입력의 디렉토리에있는 모든 로그를 지우고 싶습니까?
Seth

네, 세스가 맞습니다.
Oliver Williams

답변:


1

일반 cmd에 대한 파이프는 Windows에서 일반적이지 않습니다. 따라서 cmd의 경우 변수의 파일 목록을 가져와 for 루프를 사용하여 처리해야 할 것입니다. 어쩌면 당신도 직접 사용할 수 있습니다. dir 명령을 반복하십시오.

나는 PowerShell을 선택했다. PowerShell은 비슷한 일을하지만 내 의견으로는 더 읽기 쉽다.

Get-ChildItem -Recurse -Filter "*.log" | Clear-Content

모든 단일 파일을 확인하려면 ( /P 너의 dir 모든 화면을 일시 중지합니다.) -Confirm 스위치를 켜다 Clear-Content.

어떤 이유에서든 for 루프를 사용하고 echo를 사용하려면 다음을 사용할 수 있습니다.

Get-ChildItem -Recurse -Filter "*.log" | %{ echo $null > $_; }

PowerShell을 살펴 보겠습니다. 이 게시물의 미래 시청자를위한 링크 일 것입니다. 감사.
Oliver Williams

나는 이것을 시도하고 -Recurse를 성공적으로 추가했다. -Filter 정확한 filename.log를 성공적으로 끝냈다. 그러나 PowerShell은 * 문자를 좋아하지 않는다.
Oliver Williams

별표가 마음에 들지 않는다 니 무슨 소리 니? 그것을 따옴표에 넣었습니까?
Seth

0

로그 파일에서 dir 출력을 수집하려면 / p를 삭제하고 리디렉션하십시오. dir / s * .log & gt; myfile.log

그러면 이전 파일을 삭제하고 새 파일을 만듭니다.

서브 디렉토리별로 나열하는 대신 각 행에 전체 경로를 사용하려면 / b를 사용하십시오 dir / s / b * .log & gt; myfile.log


레오, 그게 내가하고 싶은게 아니야. 나는 파일을 자르고 싶다. dir 0 바이트로 돌아가며 myfile.log에 아무 것도 쓰지 않습니다. myfile.log가 없습니다 - 이것은 단지 예일뿐입니다. 내 게시물을 수정하여이를 명확히했습니다.
Oliver Williams

0

에 의해 반환 된 일치하는 파일을 자르는 방법 dir /s /p *.log?

다음 배치 파일 (test.cmd)을 사용하십시오.

@echo off
setlocal
for /f "tokens=*" %%f in ('dir /b /s *.log') do (
  echo|set /p=>"%%f"
  )
endlocal

사용 예 :

> dir /s /p *.log
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

02/10/2016  17:02             2,305 test.log
               1 File(s)          2,305 bytes

 Directory of F:\test\test

02/10/2016  17:02             2,305 test.log
               1 File(s)          2,305 bytes

 Directory of F:\test\test with space

02/10/2016  17:02             2,305 test.log
               1 File(s)          2,305 bytes

     Total Files Listed:
               3 File(s)          6,915 bytes
               0 Dir(s)  1,737,619,595,264 bytes free

> test

> dir /s /p *.log
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

24/11/2016  10:39                 0 test.log
               1 File(s)              0 bytes

 Directory of F:\test\test

24/11/2016  10:39                 0 test.log
               1 File(s)              0 bytes

 Directory of F:\test\test with space

24/11/2016  10:39                 0 test.log
               1 File(s)              0 bytes

     Total Files Listed:
               3 File(s)              0 bytes
               0 Dir(s)  1,737,619,607,552 bytes free

더 읽을 거리

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.