2014-02-21 4 views
0

У меня есть каталог, который постоянно обновляется с помощью pdf-файлов. Имена файлов выглядят следующим образом:Переместить файлы на основе строки даты в имени файла batch

0001_2014_02_14_000000001_018_001_000.pdf 

0001_2014_02_14_000000002_018_002_000.pdf 

0001_2014_02_15_000000003_018_001_000.pdf 

0001_2014_02_15_000000004_018_002_000.pdf 

Как создать пакетный файл, который будет анализировать дату (символ место 6) и переместить файлы в директорию под названием d:\send. Чтобы сделать его более сложным, мне нужно вычесть 3 дня с сегодняшней даты и переместить только эти файлы. BTW измененная дата файлов не будет работать. Правильная дата - это дата в имени файла.

пример: сегодня 2/21/2014 найти файлы, которые имеют префикс 0001_2014_02_18_??????????.pdf и отправить их на d:\send

Конечно сегодняшняя дата будет меняться ежедневно, и это будет планируется запустить каждый день.

Благодарим за помощь.

+1

Это, вероятно, может быть сделано с помощью этого ответа http://stackoverflow.com/questions/51054/batch-file-to-delete-files-older-than -n-days? rq = 1 –

+0

@preetsangha Эта ссылка показывает только примеры для файлов 'old', чем данный рисунок, не совсем равный ему. – foxidrive

ответ

0

Тест это на некоторых файлах примеров:

@echo off 
set day=-3 
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s) 
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2) 
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a" 
del "%temp%\%~n0.vbs" 
set "YYYY=%result:~0,4%" 
set "MM=%result:~4,2%" 
set "DD=%result:~6,2%" 
move "????_%yyyy%_%mm%_%dd%_*.pdf" "d:\send" 
pause 
+0

Я вижу, где вы собираетесь с этим. Он должен работать, но я получаю «Двойной файл существует или файл не может быть найден». Проверка путей и имен файлов. Ожидание. – user3338615

+0

Работа! Спасибо огромное! – user3338615

Смежные вопросы