2017-08-01 71 views
0

我写了一个批处理脚本,这是分支我的项目svn,并希望创建与sphinx然后我复制到分支路径的文档。批量添加额外在cp路径

的一部分,我这样做是:

ECHO ##### Creating Docs Branch %VERSION% 

cd %~dp0\trunk\Python\MyPackage\docs 
call make html 
cp -r _build\html %~dp0\branches\%VERSION%\Python\docs\MyPackage 

svn add %~dp0\branches\%VERSION%\Python\docs\MyPackage 
svn commit %~dp0\branches\%VERSION%\Python\docs\MyPackage -m "Added Docs Branch %VERSION%" 

这种失败cp: cannot mkdir "D:/00_Workspace/MyProject/MyPackage//branches/1.1.0/Python/docs/MyPackage": Path could not be found

显然有加MyPackagebranches 之间的第二/为什么会出现这种情况?

这里的batch

@echo off 
set "VERSION=%1" 
set "COMMON_VERSION=%2" 

if "%VERSION%"=="" set /p VERSION=Enter the version number you want to create the branch for?: 
if "%COMMON_VERSION%"=="" set /p COMMON_VERSION=Enter the version number of the common python toolchain you want to use?: 

set PACKAGE_NAME=%~dp0 

ECHO ##### Updating SVN Repository 

svn update 

ECHO ##### Creating requirements.txt 
cd trunk 
call python create_requirements_txt.py %VERSION% %COMMON_VERSION% 
svn add requirements.txt 
svn commit requirements.txt -m "Updated requirements.txt to version %VERSION%" 
cd %~dp0 

ECHO ##### Creating Branch for version %VERSION% 

for /f "delims=" %%i in ('svn info ^| FINDSTR /R /C:"Relative URL"') do set URL=%%i 
set "URL=%URL:*: =%" 

for /f "delims=" %%i in ('svn info ^| FINDSTR /R /C:"Repository Root"') do set ROOT=%%i 
set "ROOT=%ROOT:*: =%" 

set "DEST_URL=%ROOT%%URL:*\trunk=%/branches/%VERSION%" 
set "SRC_URL=%ROOT%%URL%/trunk" 

ECHO ##### Package: %PACKAGE_NAME% 
ECHO ##### Source: %SRC_URL% 
ECHO ##### Destination: %DEST_URL% 

call svn copy %SRC_URL% %DEST_URL% -m "Branch %PACKAGE_NAME% Version %VERSION%" 

ECHO ##### Succesfully created branch %VERSION% 
call svn update 

ECHO ##### Creating Docs Branch %VERSION% 

cd %~dp0\trunk\Python\MyPackage\docs 
call make html 
cp -r _build\html %~dp0\branches\%VERSION%\Python\docs\MyPackage 

svn add %~dp0\branches\%VERSION%\Python\docs\MyPackage 
svn commit %~dp0\branches\%VERSION%\Python\docs\MyPackage -m "Added Docs Branch %VERSION%" 
pause 
exit /b 0 

:SVN_ERROR 
ECHO ##### SVN Error: Either Source Repo (%SRC_URL%) does not exist or the Tag (%DEST_URL%) already exists! 
pause 
exit /b 1 
+0

'%〜dp0'包含驱动器号和正在运行脚本的路径,并以反斜杠结束。使用'svn add%〜dp0branches \%VERSION%\ Python \ docs \ MyPackage'和所有相似的路径修改'svn add%〜dp0 \ branches \%VERSION%\ Python \ docs \ MyPackage'。 – elzooilogico

回答

1

完整版本@elzooilogico说

%~dp0包含从那里运行脚本以反斜线结束驱动器字母加路径。更改svn add %~dp0\branches\%VERSION%\Python\docs\MyPackagesvn add %~dp0branches\%VERSION%\Python\docs\MyPackage和所有类似的路径。

应该工作。

+1

我通常会将'%〜dp0'分配给本地环境变量,并去掉尾随的反斜杠。阅读'%SCRIPT_DIR%\ branches \ ...'更容易。 – eryksun