Сделать батник с таким содержимым
for %%x in (%*) do copy "%%~x" "%%~dpnx_%date%%%~xx"
и таскать на него файлы скопом
Код в вашем батнике выглядит в целом хорошо и выполняет задачу копирования файлов с добавлением текущей даты в их имена. Однако, есть несколько моментов, которые можно улучшить:
1. Форматирование даты: в текущей версии кода переменная %date% предоставляет дату в формате, зависимом от настроек региональных параметров компьютера. Это может привести к проблемам, так как разные компьютеры могут иметь различные форматы даты. Рекомендуется использовать стандартный формат даты, который не зависит от настроек компьютера. Например, в формате "дд.мм.гггг", можно использовать команду wmic для получения текущей даты без необходимости удалять ненужные символы:
bat
for /f "delims=" %%D in ('wmic os get LocalDateTime ^| findstr /b [0-9]') do set "date=%%D"
set "date=!date:~6,2!.!date:~4,2!.!date:~0,4!"
2. Проверка наличия файлов: в текущей версии кода отсутствует проверка наличия файлов перед копированием. Если переданный файл не существует, команда copy может выдать сообщение об ошибке. Для этого можно добавить проверку наличия файлов перед выполнением команды copy. Например, используя if exist:
bat
for %%x in (%*) do (
if exist "%%~x" (
copy "%%~x" "%%~dpnx_%date%%%~xx"
) else (
echo Файл "%%~x" не найден.
)
)
3. Обработка имени файла с пробелами: ваш код может не корректно обработать имена файлов, содержащие пробелы из-за неправильного экранирования. Рекомендуется использовать двойные кавычки для обработки файлов с пробелами. Например:
bat
for %%x in (%*) do copy "%%~x" "%%~dpnx_%date%%%~xx"
Вот улучшенная версия кода с учетом этих рекомендаций:
bat
@echo off
setlocal enabledelayedexpansion
REM Получаем текущую дату в формате "дд.мм.гггг"
for /f "delims=" %%D in ('wmic os get LocalDateTime ^| findstr /b [0-9]') do set "date=%%D"
set "date=!date:~6,2!.!date:~4,2!.!date:~0,4!"
REM Проходим по каждому переданному файлу
for %%x in (%*) do (
REM Проверяем наличие файла
if exist "%%~x" (
REM Извлекаем путь, имя и расширение файла
set "path=%%~dpx"
set "name=%%~nx"
set "extension=%%~xx"
REM Формируем новое имя файла с добавлением текущей даты
set "newname=!name!_!date!!extension!"
REM Копируем файл с новым именем
copy "%%~x" "!path!!newname!"
) else (
echo Файл "%%~x" не найден.
)
)
echo Копирование файлов завершено.
Теперь код более надежно обрабатывает различные имена файлов и использует стандартный формат даты для всех компьютеров.