시나리오 : 우리는 제품의 여러 릴리스가 있으며 각 릴리스에 대해 폴더가 기본 폴더에 만들어집니다. 다양한 릴리스에서 도움말 파일이 수정되었습니다. 모든 도움말 파일 이름이 텍스트 파일에 나열되어 있습니다. 내가하는 스크립트가 필요 다음 filenames.txt 파일에서 각 파일 이름을 가지고텍스트 파일에서 파일 이름을 선택하고 최신 파일을 찾으려면 일괄 스크립트
- 을
- (모든 릴리스에서) 전체 디렉토리에서 해당 이름의 파일
- 최신 파일을 찾기위한 검색
- 이 코드를 얻으려면 내가 스택 오버플로에서 발견 코드의 다양한 부분에서 도움을했다 지정된 폴더
에 복사하고이를 결합 :
,@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
echo.
FOR /F "usebackq delims=" %%a in ("filenames.txt") do (
SET "x=%%a"
ECHO '!x!'
SET FFPath=C:\SVN\nlbavwdocsvn\rep_doc_erpln\trunk\ERPLN
SET NewPath=C:\Lavanya\extracted
SET NewestDate=20160824
ECHO Recursively searching %FFPath%
FOR /F %%I in ('DIR %FFPath%\ !x! /a:-d /s /b') DO (
SET FullDate=%%~tI
ECHO %FFPath%
REM Set CurrDate to yyyymmdd format. Note: Will fail if regional settings changed.
SET CurrDate=!FullDate:~6,4!!FullDate:~0,2!!FullDate:~3,2!
If !CurrDate! gtr !NewestDate! (
SET NewestDate=!CurrDate!
SET NewestFile=%%~fI)
ECHO Copying %NewestFile% to %NewPath%
ECHO.
COPY /Y "%NewestFile%" "%NewPath%"
ECHO.
)
)
PAUSE
이 코드는 작동하지 않습니다. 그리고 나는 그 오류를 알아낼 수 없다.
당신이 'DIR % FFPath % \ X'DIR'으로 대체해야하는': 그래서 여기
코드입니다 "% FFPath % \를 X를!". 'dir'은 공백으로 구분 된 다중 마스크를 검색합니다 (예 :'dir * .txt * .jpg는 모든 * .txt 파일과 모든 * .jpg 파일을 나타냅니다) – Stephan_and_에 설정된 _all_ 변수에 대해 지연 확장을 사용하십시오 루프 안에서 읽으십시오! 그리고 단순히'dir'을 날짜순으로 정렬하는 것 ('/ o : d') ... – aschipfl
@Stephan 당신이 제안한 변경을 시도했지만 기대했던 결과를 얻지 못했습니다. 솔루션을 찾는 다른 방법은 없습니까? 질의를 들여다 주셔서 감사합니다! – Lavanya