2017-08-01 80 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

相關問題