![DOS 명령줄 이전 달 이름의 폴더로 파일 이동](https://rvso.com/image/1254808/DOS%20%EB%AA%85%EB%A0%B9%EC%A4%84%20%EC%9D%B4%EC%A0%84%20%EB%8B%AC%20%EC%9D%B4%EB%A6%84%EC%9D%98%20%ED%8F%B4%EB%8D%94%EB%A1%9C%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%8F%99.png)
이전 달의 PDF 파일 날짜를 기준으로 일부 PDF 파일을 다른 폴더로 자동으로 이동하는 작업 스케줄러에서 작업을 생성하려고 합니다. 내가 겪고 있는 문제는 명령줄을 이전 달로 롤백하는 방법을 알 수 없다는 것입니다. 처음부터 동일한 것을 사용하여 폴더를 생성하고 있지만 작업은 지난달로 간주되는 말에 실행되도록 설정되어 있습니다. 예를 들어 현재 달 2010-10에 대한 폴더를 생성하기 위해 10월에 실행되는 하나의 작업과 PDF가 컴파일된 후 11월에 다른 작업을 실행하여 2010-10 폴더로 이동합니다. 어떤 아이디어가 있나요?
내가 사용하고 있는 날짜 매개변수는 "%DATE:~0,2%"입니다. "%DATE:~0,2% -1" 및 "%DATE:~0,2%-1"을 시도했고 전체 텍스트는 배치 파일은 "move [-Y] *.pdf P:\CBO\Physician Monthly Reports\%DATE:~6,4%-%DATE:~0,2% -1"입니다.
답변1
문자를 선택하려면 날짜 형식이 "MM-DD-YYYY"와 같아야 합니다. 이 명령은 이번 달의 숫자를 검색하여 1을 뺀 값을 이라는 변수에 저장합니다 prevmonth
. 또한 이전 달이 12월인 경우 연도에서 1을 뺍니다.
set /a prevmonth=%DATE:~0,2% - 1
set yearprevmo=%DATE:~6,4%
if %prevmonth% equ 0 set /a yearprevmo=%yearprevmo%-1 & set prevmonth=12
move -Y *.pdf "P:\CBO\Physician Monthly Reports\%yearprevmo%-%prevmonth%"
디렉터리 이름에 공백이 있으므로 따옴표에 유의하세요.
답변2
C:\>move /Y \\your Network server\PROD\PM\FileArchive\2011*.txt \\your Network server\PROD\PM\FileArchive\Documents