2 / 2 / 0
Регистрация: 28.01.2014
Сообщений: 210
1

Написать командник для формирования списка определенного формата файлов с определенным диапазоном дат

12.02.2016, 13:43. Показов 1687. Ответов 3
Метки нет (Все метки)

Добрый день!
Помогите пожалуйста написать командник для формирования списка определенного формата файлов с определенным диапазоном дат.

В чем суть:

Есть папка, в которой хранится много папок и файлов разного формата и созданные в разное время:

C:\Папка\Файлы\test\

Необходимо:
1. Из этой папки сформировать список файлов формата *.txt, *.jpeg с определенным диапазоном дат (например с 01.01.2016 по 01.02.2016) и вывести его в 1/lst
Желательно,чтобы диапазон дат можно было задать вместе с запуском командника, например, запускаем командник 1.cmd 01.01.2016 (первый параметр) 01.02.2016 (второй параметр)

2. Удалить ненужный начальный путь в 1/lst до test\ (включая test\). Начальный путь всегда будет одним и тем же
3. Отсортировать список по алфавиту
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2016, 13:43
Ответы с готовыми решениями:

Копирование файлов с конкретным диапазоном дат
Помогите пожалуйста. Есть каталог 1 в котором куча папок и файлов. Необходимо скопировать из этого...

Программа для поиска и удаления файлов определенного формата
Доброго времени суток, столкнулся с задачей на работе, не срочной и немного не моего профиля но...

Стандартная программа для октрытия определенного формата файлов
Можно делать чтоб примеру виндоуским explorere открыл свойству файл с расширением скажем *.xxx...

Написать функцию для формирования списка из элементов
Написать функцию для формирования списка из элементов, которые заключены между элементами G и H...

3
Эксперт WindowsАвтор FAQ
17779 / 7515 / 888
Регистрация: 25.12.2011
Сообщений: 11,288
Записей в блоге: 16
18.02.2016, 02:36 2
Средства cmd очень плохо подходят для Вашей задачи. На нем конечно можно, но скорость работы уже для > 300 файлов будет поразительно низкой.
Лучше делать на чём угодно другом: PowerShell, vbs, js, python, perl, ЯВУ...
1
2 / 2 / 0
Регистрация: 28.01.2014
Сообщений: 210
18.02.2016, 09:07  [ТС] 3
Лучше на cmd....
0
Эксперт WindowsАвтор FAQ
17779 / 7515 / 888
Регистрация: 25.12.2011
Сообщений: 11,288
Записей в блоге: 16
18.02.2016, 21:14 4
Лучший ответ Сообщение было отмечено Olich666 как решение

Решение

Можно сделать jscript встроенный в cmd.
__________________

На базе утилиты forfiles.exe решение будет таким:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
@echo off
SetLocal EnableExtensions DisableDelayedExpansion
 
:: где ищем
set srcFolder=C:\Users\Alex\Desktop\ParseAVZ
 
:: какие расширения
set exts=exe txt
 
:: лог
set log=%~dp01.lst
 
PUSHD "%temp%"
echo.
if "%~1"=="" set dbeg=01.01.0001
if "%~2"=="" set dend=%date%
if "%~1"=="" if "%~2"=="" (set /p dbeg="Дата, начиная с: "& set /p dend="Дата, заврешая:  ")
::set dbeg=01.01.2014
::set dend=01.01.2017
cls
echo.
echo Период: %dbeg% - %dend%
echo.
del "%log%" 2>NUL
 
:: root
call :cmp "%srcFolder%"
:: subfolders
For /f "delims=" %%a in ('dir /s /b /ad-l "%srcFolder%\*" 2^>NUL') do call :cmp "%%a"
 
del $ $$
POPD
pause
goto :eof
 
:cmp [Folder]
 
set "fld=%~1"
Setlocal EnableDelayedExpansion
set "fld=!fld:%srcFolder%\=!"
EndLocal & set "fld=%fld%"
 
del $ 2>NUL
for %%a in (%exts%) do (
  forfiles /M "*.%%a" /P "%~1" /d +%dbeg% 2>NUL >>$
  forfiles /M "*.%%a" /P "%~1" /d -%dend% 2>NUL >>$
)
sort $ /o $$
 
:: find duplicate lines
set "old="
(for /f "delims=" %%a in ($$) do (
  set "new=%%~a"
  Setlocal EnableDelayedExpansion
  if "!new!" equ "!old!" (
    if not exist "%~1\%%~a" echo !fld!%%~a
    EndLocal
  ) else (
    EndLocal
    set "old=%%~a"
  )
)) >> "%log%"
exit /B
Но сразу оговорюсь, что работать для большого кол-ва файлов будет очень медленно, из-за криво написанной M$ утилиты forfiles.exe, к тому же не поддерживающей множественные ключи.

Скрипт принимает 2 параметра как и описано в задании.
Если просто запустить программу, она запросит ввод 2 дат. Если нажать ENTER, будут взяты даты по-умолчанию (максимальный размах - от 01.01.0001 до текущей даты).
Настройки в начале скрипта сами зададите свои.

..... добавил вложением, а то форум иногда концевые слэши съедает.
Вложения
Тип файла: zip btwDates.zip (926 байт, 2 просмотров)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.02.2016, 21:14

Есть ли в VBA функция, позволяющая определить пересечение одного диапазона дат с другим диапазоном дат?
Привет Все! Задача такова: имеем 1 диапазон даты, например, 01.10.10-30.10.10 имеем 2 диапазон...

Регулярное выражение для получения списка файлов определенного расширения
На С++ нужно из всех файлов выбрать те, которые, к примеру с раширением .txt, или .html Так вот,...

Загрузка файлов определенного формата на сервер
Друзья, привет! Подскажите пожалуйста как реализовать следующее: Нужно на сервер загружать файл...

Пытаюсь сделать архивацию файлов определенного формата!
Делаю архивацию файлов определенного формата, но встретился с проблемой когда я пытаюсь...

Копирование файлов определенного формата с сетевого диска
Добрый вечер!! Помогите в реализации написании скрипта. Задача: существует сетевая папка в...

Поиск файлов определенного формата в папке, и во всех вложенных
Всем привет. Такая задача. Имеетса папка, в которой находятса многа папок. И в этих папках есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.