Я строю небольшой конвейер автоматического развертывания приложения.Я очень новичок в пакетных файлах, создал несколько успешных, но именно этот сводит меня с ума.
Что я хочу:
во входном пути, могут быть файлыи / или подкаталоги с файлами.Если они существуют в целевом пути, то файлы в целевом пути должны быть переименованы в file_OLD.extension.
Когда это будет сделано, необходимо скопировать туда файлы из входного пути.
Если файл или подкаталог с файлом не существует, необходимо создать подкаталог и поместить туда файл.
Что у меня есть:
@echo off
setlocal enabledelayedexpansion
set inputpath=P:\Deployment\1.DeployToTST\Template
set targetpath=\\<servername>\Template
for /f %%a in ('dir "%inputpath%"/a-d/b/-p/s^|find /v ""') do (
if exist %targetpath%\%%a (
xcopy "%targetpath%\%%a" "%targetpath%/%%a_OLD" /Y
xcopy /S "%%a" "%targetpath%\%%a" /Y /I /K
) ELSE (
xcopy /S "%%a" "%targetpath\%%a%" /Y /I /K)
)
Iчувствую, что логика верна (это не ракетостроение в конце концов), однако я не могу заставить ее работать.поскольку %% a, кажется, принимает полный путь к файлу:
P:\Deployment\1.DeployToTST\Template\template1.ctx
P:\Deployment\1.DeployToTST\Template\template1\template1.ctx
Мне действительно нужно, чтобы %% a было:
template1.ctx
template1\template1.ctx
расширения файлов различаются, так же как и подкаталогив моем inputpath.
Любая помощь очень приветствуется (кроме советов остановиться с DOS Scritping ;-))