Командні лінії DOS Переміщення файлів у папки, названі попереднім місяцем


1

Я намагаюся створити завдання в Планувальнику завдань, яке автоматично перемістить деякі файли PDF в іншу папку, що базується на даті у файлах pdf, що є попереднім місяцем. Проблема, яка у мене виникає, полягає в тому, що я не можу зрозуміти, як змусити командний рядок повернутися до попереднього місяця. Я використовую те саме, щоб створити папку для початку, але завдання встановлено для запуску в кінці того, що вважалося б попереднім місяцем. Так, наприклад, одне завдання, яке працює в жовтні, створити папку для поточного місяця 2010-10, а інше запустити в листопаді після складання PDF-файлів, яке перемістить їх до папки 2010-10. Будь-які ідеї?

Параметри дати, які я використовую, є "% DATE: ~ 0,2%" я пробував "% DATE: ~ 0,2% -1" та "% DATE: ~ 0,2% -1" та повний текст у пакетний файл - "перемістити [-Y] * .pdf P: \ CBO \ Щомісячні звіти лікаря \% ДАТА: ~ 6,4% -% ДАТА: ~ 0,2% -1"


1
У DOS немає планувальника завдань. Тільки Windows робить.
grawity

1
Так, але ви можете створити пакетний файл у Блокноті та запланувати його запуск за допомогою Windows Task Scheduler. Крім того, що команда AT в DOS дозволяє планувати завдання.
ThaddeusTG

@ThaddeusTG: гравійність правильна. У DOS немає atкоманди, але Windows. DOS - це операційна система, яка відрізняється від Windows, і вона не здатна планувати завдання для подальшого запуску. Командний рядок Windows все ще залишається Windows, а не DOS.
Жиль

1
Люди продовжуватимуть називати командний рядок Windows "DOS" до кінця часу. Люди все ще називають міст Мемфіс-Арканзас "новим мостом", хоча йому майже 40 років.
Денніс Вільямсон

Якщо генерація та іменування PDF також виконуються пакетно, то пакетний файл, який створює цей каталог, також може генерувати PDF-файли з правильним іменем та зберігати їх у потрібній папці для початку. У мене один пакетний файл генерує імена та папки, CALL або START інші пакетні файли, а змінна дати, яку я використовую в першій партії для створення каталогів, передається за замовчуванням до кожного виклику або STARTED. Таким чином, всі пакетні файли знають про те саме місце, не відтворюючи змінну дати.
Скотт Маккленінг

Відповіді:


1

Вибір символів вимагає, щоб ваш формат дати виглядав як "MM-DD-YYYY". Ця команда отримує номер поточного місяця і віднімає один і зберігає його в змінній, що називається prevmonth. Він також віднімає один з року, якщо попередній місяць грудень:

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%"

Зверніть увагу на лапки, оскільки у імені вашого каталогу є пробіли.


Працювати в січні просто доведеться обережно
випадково

@ випадковий: Чому? Це ifповинно вміщувати це.
Денніс Вільямсон

Дякую за вашу відповідь, я багато чого бачив в Інтернеті, але вони були у різних форматах дати, які доступні, тож я не знав, як їх розмістити у потрібному мені форматі. Ви маєте рацію в тому випадку, якщо слід вирішити проблему запуску в січні.
ThaddeusTG

1
C:\>move /Y \\your Network server\PROD\PM\FileArchive\2011*.txt \\your Network server\PROD\PM\FileArchive\Documents
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.