2013-07-11 6 views
3

먼저 무엇보다도 초보자가 포함되어 있습니다. 내가 (모든 IT 하위 폴더 포함) 특정 폴더를 검색 할 배치 파일을 생성하고 일부 특정 문자열을 포함하는 파일 이름을 제외하고 그 안에있는 모든 파일을 복사 할이 내가이 말을 지금까지배치 파일 : 이름을 제외한 모든 파일 복사 일부 하위 문자열

set now=fish   
set logDirectory="C:\Users\paiseha\Desktop\bb\"  
for /r %logDirectory% %%i IN (*%now%*.*) do (   
rem copy process goes here    
)  

하자가 무엇인가 그것은

C:\Users\fareast\Desktop\bb\one.txt 
    C:\Users\fareast\Desktop\bb\twofishtwo.txt 
    C:\Users\fareast\Desktop\bb\three.txt 

3 파일 그래서 난 파일 one.txt 만 three.txt을 복사하려면, 대신에 단지 두 번째 복사, 난 * 지금 % 그것 때문에 * %을 알고있다. * 그래서 어떻게 그것을 반대로 할 수 있도록 주위에 다른 방법을, 날 도와 주셔서 감사합니다 pls, 사전에

답변

5

시도 :

@ECHO OFF &setlocal 
set "now=fish"   
set "logDirectory=C:\Users\paiseha\Desktop\bb"  
for /f "delims=" %%a in ('dir /a-d/b/s "%logDirectory%"^|findstr /riv "^.*[\\][^\\]*%now%[^\\]*$"') do (   
    rem copy process goes here    
) 

편집 : \ 문자 때문에 비스타 FINDSTR의 정규식 \ 탈출 방법에 대한 특질의 [\\] 대신 \\으로 표시됩니다. Vista는 \\\\이 필요하지만 XP와 Win7은 \\을 사용해야합니다. 모든 플랫폼에서 작동하는 유일한 표현은 [\\]입니다. 자세한 내용은 What are the undocumented features and limitations of the Windows FINDSTR command?을 참조하십시오.

+0

'% now %'가 포함 된 경로를 고려하십시오 .../exclude-string 콤보가 지정된 경우 작동하지만 일반적인 경우가 아닙니다 :(soz ... – Magoo

+0

답장을 보내 주셔서 감사합니다. – paiseha

+0

@paiseha 내 편집을 참조하십시오. – Endoro

2
for /f "delims=" %%a in ('dir /a-d/s/b "%logDirectory%" ') do echo %%~nxa|findstr /i /L "%now%" >nul&if errorlevel 1 ECHO COPY "%%a" 

이 적합합니다.

+0

그것도 부모 디렉토리를 통해 루프합니까? 나는 "C : \ 사용자 \ paiseha \ 바탕 화면 \ bb \"를 통해 루프 대신에 내가 설정 한 의미 "C : \ Users \ paiseha \ Desktop \"디렉토리를 반복합니다. – paiseha

+0

@paiseha : @Endoro와 같은 편집 필요 -'set log ... '에서 따옴표를 사용하여'var = "대신'var = string'을 닫습니다. 문자열 "'. 첫 번째는 traili없이 값을 할당합니다. 공백이 있다면 (존재하는 경우), 두 번째는 공백 값을 할당하고 행의 후행 공백을'var'에 할당합니다. – Magoo

+0

예,^_^덕분에 피터 – paiseha

관련 문제