Команда dos для разделения имени и расширения файла на переменные
Мне нужно скопировать файл x.dtsx из местоположения a в местоположение b.
Если x.dtsx уже существует в b, тогда мне нужно переименовать x.dtsx в x_Standby.dtsx. Затем, после переименования, скопировать x.dtsx в b.
Мой текущий код выглядит так:
if exists %1 rename %1 %(should be 1_standy.extension)
xcopy %1 %2
1 ответ
Если вы используете расширения Командный процессор (по умолчанию в Windows 2000 и более поздних версиях), то вы можете использовать следующий необязательный синтаксис:
%~1 - expands %1 removing any surrounding quotes (")
%~f1 - expands %1 to a fully qualified path name
%~d1 - expands %1 to a drive letter only
%~p1 - expands %1 to a path only
%~n1 - expands %1 to a file name only
%~x1 - expands %1 to a file extension only
%~s1 - expanded path contains short names only
%~a1 - expands %1 to file attributes
%~t1 - expands %1 to date/time of file
%~z1 - expands %1 to size of file
Модификаторы могут быть объединены, чтобы получить составные результаты:
%~dp1 - expands %1 to a drive letter and path only
%~nx1 - expands %1 to a file name and extension only
Таким образом, ваша команда будет выглядеть примерно так:
if exist %2\%~nx1 ren %2\%~nx1 %~n1_standby%~x1