2013-08-22 1 views
3

정규식을 기반으로 배치 스크립트로 일부 파일을 삭제하려고합니다. 내가 가지고있는 것은 : findstr 정규식을 기반으로 파일을 삭제하는 배치 스크립트

FOR /f "tokens=*" %%a in ('dir /b | findstr MY_REGEX_HERE') DO ECHO %%a 

나는 나에게 디렉토리의 목록을 제공, 자체 내 내부 명령 작동하는,하지만이 같은 for 루프에서 그것을 포함 할 때 나는 | was unexpected at this time. 내에서 허용되지 않는 배관 오류를 얻을 수 FOR 루프 명령? 아니면 그걸 탈출해야 하나?

내가 어떻게이 작업을 수행 할 수 있는지에 대한 도움이 될 것입니다.

답변

7
FOR /f "tokens=*" %%a in ('dir /b ^| findstr MY_REGEX_HERE') DO ECHO %%a 
^ 그 전에 사용 | 탈출

.

+0

위대한; 이 작품. 그러나^문자가 이스케이프 문자 일 때부터? – Retsam

+0

@Retsam -'^'은 제가 아는 한 정말 오랜 시간 동안 배치 파일의 이스케이프 문자 중 하나였습니다. 15 세 이상일 수도 있습니다. – user93353

-7

CMD 프로세서는 원하는대로 처리 할 수 ​​없으므로이 컨텍스트에서는 파이프가 적합하지 않습니다. ECHO 그루터기를 다른 배치 파일에 대한 호출로 교체하면 문제가 발생할 수 있지만 여전히 문제가 있습니다. 스크립팅 환경 옵션을 빠르게 비교하려면 Want to batch move all files from directories into the parent directory and delete the subdirectory을 참조하십시오.

+2

당신이 그것을 벗어날 때 그것은 완벽하게 합법적입니다. –

+0

나쁜 소식 - 파이프를 벗어나는 것을 잊어 버렸습니다. CMD는 여전히 복잡한 스크립팅에 대해 형편 없음입니다. –

관련 문제