Команда 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

person akhil vangala    schedule 05.01.2012    source источник
comment
И повторюсь: DOS это не CMD, а [batch-processing] neq [batch=file]   -  person    schedule 10.05.2017


Ответы (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
person Neil    schedule 05.01.2012
comment
Большое спасибо, Нил Потрясающе - person akhil vangala; 06.01.2012