Помогите нубу оптимизировать батник

Бородатый Джо
Дата: 14.12.2017 09:43:44
Доброго времени суток! Есть вот такая моя первая проба
@ECHO OFF
cd %userprofile%\Desktop

@rem путь откуда переименовуются файлы

FOR %%f IN (*.txt *.bmp *.doc *.jpg *.png*) DO (
If Not "%~nx0"=="%%~nxf" ren "%%f" "%Date:~6,4%%Date:~3,2%%Date:~0,2% %%~nxf"
)

@rem собственно переименовка файла в формат ДДММГГГГ имя файла

cd %userprofile%\Desktop
FOR %%f IN (*.doc *.txt) DO XCOPY %userprofile%\Desktop\"%%f" "E:\Сохранять сюда\Документы\" /m /y
FOR %%f IN (*.jpg *.png *.bmp) DO XCOPY %userprofile%\Desktop\"%%f" "E:\Сохранять сюда\Изображения\" /m /y

@rem удаление старых файлов

cd /d %userprofile%\Desktop
del *.doc *.bmp *.txt *.jpg *.png

Сразу повторюсь, что проба ПЕРВАЯ, так что если все таки кто-то захочет помочь, описывайте пожалуйста подробнее ?)
Akina
Дата: 14.12.2017 10:18:33
Бородатый Джо
FOR %%f IN (*.doc *.txt) DO XCOPY %userprofile%\Desktop\"%%f" "E:\Сохранять сюда\Документы\" /m /y
FOR %%f IN (*.jpg *.png *.bmp) DO XCOPY %userprofile%\Desktop\"%%f" "E:\Сохранять сюда\Изображения\" /m /y
А вот это - на зачем? XCOPY прекрасно понимает подстановочные знаки в имени файла источника.
Бородатый Джо
Дата: 14.12.2017 13:58:16
Akina, конкретнее можно ? что именно зачем ? И можно тогда конечный вариант с исправлением ?
Roman Mejtes
Дата: 14.12.2017 14:02:15
через команду dir *.zip /s /b /a можно сделать рекурсивно, на входе будут сразу полные пути к файлам
Akina
Дата: 14.12.2017 14:35:19
FOR %%f IN (*.doc *.txt) DO XCOPY %userprofile%\Desktop\"%%f" "E:\Сохранять сюда\Документы\" /m /y
эквивалентно
XCOPY %userprofile%\Desktop\*.doc "E:\Сохранять сюда\Документы\" /m /y
XCOPY %userprofile%\Desktop\*.txt "E:\Сохранять сюда\Документы\" /m /y
Только отработает куда как быстрее...

И команды CD /D достаточно одной, в начале батника - последующие команды не изменяют текущего каталога.
Бородатый Джо
Дата: 14.12.2017 15:21:44
Akina,
но тогда было

FOR %%f IN (*.doc *.txt) DO XCOPY %userprofile%\Desktop\"%%f" "E:\Сохранять сюда\Документы\" /m /y

а станет

XCOPY %userprofile%\Desktop\*.doc "E:\Сохранять сюда\Документы\" /m /y
XCOPY %userprofile%\Desktop\*.txt "E:\Сохранять сюда\Документы\" /m /y
XCOPY %userprofile%\Desktop\*.jpg "E:\Сохранять сюда\Документы\" /m /y
XCOPY %userprofile%\Desktop\*.png "E:\Сохранять сюда\Документы\" /m /y
XCOPY %userprofile%\Desktop\*.bmp "E:\Сохранять сюда\Документы\" /m /y

?
Лично я разници в скорости не заметил, милисекунды?
Basil A. Sidorov
Дата: 14.12.2017 15:53:02
Бородатый Джо
но тогда было
...
а станет
Есть и третий вариант:
 for %%A in (doc txt pdf) do @xcopy *.%%A назначение\
Лично я разници в скорости не заметил, милисекунды?
На фоне копирования - да, но, таки, если есть возможность за один запуск программы выполнить работу десятков-сотен запусков, то этой возможностью надо пользоваться.