![Linhas de comando do DOS Movem arquivos para pastas nomeadas no mês anterior](https://rvso.com/image/1254808/Linhas%20de%20comando%20do%20DOS%20Movem%20arquivos%20para%20pastas%20nomeadas%20no%20m%C3%AAs%20anterior.png)
Estou tentando criar uma tarefa no Agendador de Tarefas que moverá automaticamente alguns arquivos PDF para outra pasta com base na data dos arquivos PDF do mês anterior. O problema que estou tendo é que não consigo descobrir como fazer com que a linha de comando volte para o mês anterior. Estou usando a mesma coisa para criar a pasta para começar, mas a tarefa está configurada para ser executada no final do que seria considerado o mês anterior. Assim, por exemplo, uma tarefa executada em outubro para criar a pasta para o mês atual 2010-10 e outra executada em novembro após a compilação dos PDFs que os moverá para a pasta 2010-10. Alguma ideia?
Os parâmetros de data que estou usando são "%DATE:~0,2%" Eu tentei "%DATE:~0,2% -1" e "%DATE:~0,2%-1" e o texto completo em o arquivo em lote é "move [-Y] *.pdf P:\CBO\Physician Monthly Reports\%DATE:~6,4%-%DATE:~0,2% -1"
Responder1
A seleção de caracteres exige que o formato da data seja "MM-DD-AAAA". Este comando recupera o número do mês atual e subtrai um e salva em uma variável chamada prevmonth
. Também subtrai um do ano se o mês anterior for dezembro:
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%"
Observe as aspas, pois há espaços no nome do seu diretório.
Responder2
C:\>move /Y \\your Network server\PROD\PM\FileArchive\2011*.txt \\your Network server\PROD\PM\FileArchive\Documents