방문해 주셔서 감사합니다. 내 질문 : 일반적으로 DEVICE_DEVICENumber_DateID 형식으로 .csv로 저장된 매일 파일을받습니다. DateID의 Date 부분을 기반으로이 파일을 해당 월별 폴더 (예 : 201401)로 이동하고 싶습니다. DateID는 첫 번째 날짜와 고유 한 장치 ID (예 : YYYYMMDDUNIQUEID-2014010110)로 작성됩니다.
위에서 언급 한 폴더 (예 : 201401, 201402, 201403 등)를 만드는 경우 파일을 지정하려는 폴더와 일치하도록 문자열의 일부를 가져 오는 간단한 방법이 있습니까?
당신의 도움을 주셔서 감사합니다!
칼 브라운
일반적인 파일 이름 :
GO.YO_WTR_SOO5_PT_20140102110.csv
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=.\csvfiles"
SET "destdir=c:\destdir"
FOR /f "delims=" %%a IN ('dir /b /a-d "%sourcedir%\*.csv" ') DO (
SET "csvname=%%~na"
IF NOT "!csvname:*_=!"=="!csvname!" (
CALL :finddate
ECHO MD "%destdir%\!csvname!"
ECHO MOVE "%sourcedir%\%%a" "%destdir%\!csvname!\"
)
)
GOTO :EOF
:finddate
IF /i "%csvname:~-6%"=="_audit" SET "csvname=%csvname:~0,-6%"
IF "%csvname:*_=%"=="%csvname%" SET "csvname=%csvname:~0,6%"&GOTO :EOF
SET "csvname=%csvname:*_=%"
GOTO finddate
콘텐츠가있는 '. \ csvfiles'디렉토리에 적용되는 경우
GO.YO-WTR-SOO5-PT-20140102110.csv
GO.YO_WTR_SOO5_PT_20140102110.csv
생산 된 출력
MD "c:\destdir\201401"
MOVE ".\csvfiles\GO.YO_WTR_SOO5_PT_20140102110.csv" "c:\destdir\201401\"
필요한 명령은 ECHO
테스트 목적으로 만 사용됩니다. 당신은 명령이 올바른지, 변경 것을 확인한 후 ECHO MD
에 MD
실제로 디렉토리를 생성합니다. 추가] 2>nul
억제 오류 메시지 (예. 디렉토리가 이미 존재) 변경 ECHO MOVE
합니다 MOVE
실제로 파일을 이동합니다. 추가] >nul
억제 보고서 메시지 (예. 1 file moved
)
수정-..._ audit.csv에 대한 조정.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다