도움이 필요합니다. 한 폴더에서 다른 폴더로 파일을 옮기는 배치 파일을 만들려고합니다. 파일 이름은 yyyy-mm 형식의 변수와 날짜 이전 또는 이후의 추가 데이터를 갖습니다. 일괄 처리는 파일을 mmmm-yy 폴더 이름이 같은 서버 디렉토리로 이동해야합니다.배치 파일 - 날짜 변수 및 한 날짜의 파일 이름이 다른 폴더로 이동하는 파일
아래 코드를 생각해 냈지만 제대로 작동하지 않습니다.
- "누락 된 피연산자"오류가 반환됩니다.
- 새 디렉터리가 만들어 지지만 파일이 이전 폴더에서 새 폴더로 이동하지 않습니다.
내 코드 :
@echo off
FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
SET /A MONTH=%%D
SET /A YEAR=%%F
)
:: Set month to last month
set /a MONTH=%MONTH%-1
:: If month equals zero, reset to 12
if %MONTH%==0 set MONTH=12
:: If month < 10, fill with zero
if %MONTH% LSS 10 set MONTH=0%MONTH%
:: If month = 12, subtract one year
if %MONTH%==12 set /a YEAR=%YEAR%-1
SET FILEDATE=%YEAR%-%MONTH%
SET FOLDER2=E:\ARCHIVE\%FILEDATE%
MKDIR %FOLDER2%
:: trying to recreate the format MOVE C:\FOLDER1\\*2013-07*.* E:\FOLDER2\2013-07 which does work
MOVE C:\FOLDER1\\*%FILEDATE%*.* %FOLDER2%
:END
EXIT
편집 : 정말 도움이 두 대응보다. 나는 그들에게 투표를 시도했지만 내 평판이 좋지 않다고 생각한다. 어머니는 옳았습니다. 그것은 당신을 멀리 얻을 것이다. :)
답장을 보내 주셔서 감사합니다. 불행하게도이 코드는 더 많은 오류를 발생 시켰습니다. .... ' "SET month = 8"'은 내부 또는 외부 명령, 작동 가능 프로그램 또는 배치 파일로 인식되지 않습니다. MONTH = 0-1 YEAR = 2013 .... 또한 문제는 날짜 필드를 구문 분석하는 대신 파일을 이동하는 것입니다. – jubilare
또한이 배치 파일은 모든 직원이 사용하기 때문에 시스템 날짜를 어떤 형식으로 설정했는지 확신 할 수 없습니다. 연구에 따르면 WMIC가 더 안전하다고합니다. 그러나 귀하의 의견에 감사드립니다. – jubilare
거기에 잘못된 큰 따옴표가있었습니다. 'MOVE' 명령에서 % FILEDATE % 뒤에 별표가 없습니다. Foxidrive의 대답을보십시오. – Endoro