Как отличить папки от файлов в пакетном скрипте? (Или как копировать и переименовывать-метки времени без разбора?)

1102
fluxtendu

Я хочу создать командный файл для копирования файлов или папок в указанном каталоге и добавления даты и времени к их именам.
Вот мой фактический код:

@echo off Set _bpath=T:\Backup\ if [%1]==[] goto :eof :loop Set _file=%~n1% Set _ext=%~x1% For /f "tokens=1-3 delims=1234567890 " %%a in ("%time%") Do Set "delims=%%a%%b%%c" For /f "tokens=1-4 delims=%delims%" %%G in ("%time%") Do ( Set _hh=%%G Set _min=%%H Set _ss=%%I Set _ms=%%J ) copy %1 "%_bpath%%_file%(%date:/=-% %_hh%h%_min%m%_ss%s)%_ext%" shift if not [%1]==[] goto loop 

Этот работает только для файлов, и я мог бы легко адаптировать его для папок, xcopy /E %1 "%_bpath%%_file%(%date:/=-% %_hh%h%_min%m%_ss%s)но я хотел бы избежать работы с двумя пакетными файлами.

Итак, как копировать / переименовывать их без разбора (я пробовал с копированием, xcopy и robocopy без успеха) или как отличить их, чтобы создать две ветви IF? (Использование% ~ x1% слишком ненадежно ...)

1

1 ответ на вопрос

1
asdfg

Это может быть полезно для вас, посмотрите этот вопрос