![Líneas de comando de DOS Mover archivos a carpetas nombradas con el mes anterior](https://rvso.com/image/1254808/L%C3%ADneas%20de%20comando%20de%20DOS%20Mover%20archivos%20a%20carpetas%20nombradas%20con%20el%20mes%20anterior.png)
Estoy intentando crear una tarea en el Programador de tareas que moverá automáticamente algunos archivos pdf a otra carpeta basada en la fecha de los archivos pdf que corresponde al mes anterior. El problema que tengo es que no puedo encontrar la manera de hacer que la línea de comando vuelva al mes anterior. Para empezar, estoy usando lo mismo para crear la carpeta, pero la tarea está configurada para ejecutarse al final de lo que se consideraría el mes anterior. Entonces, por ejemplo, una tarea que se ejecuta en octubre para crear la carpeta para el mes actual 2010-10 y otra que se ejecuta en noviembre después de compilar los archivos PDF que los moverá a la carpeta 2010-10. ¿Algunas ideas?
Los parámetros de fecha que estoy usando son "%DATE:~0,2%". He probado "%DATE:~0,2% -1" y "%DATE:~0,2%-1" y el texto completo en el archivo por lotes es "mover [-Y] *.pdf P:\CBO\Physician Monthly Reports\%DATE:~6,4%-%DATE:~0,2% -1"
Respuesta1
La selección de caracteres requiere que el formato de fecha sea "MM-DD-AAAA". Este comando recupera el número del mes actual, le resta uno y lo guarda en una variable llamada prevmonth
. También resta uno al año si el mes anterior es diciembre:
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%"
Tenga en cuenta las comillas ya que hay espacios en el nombre de su directorio.
Respuesta2
C:\>move /Y \\your Network server\PROD\PM\FileArchive\2011*.txt \\your Network server\PROD\PM\FileArchive\Documents