1

我一直致力于构建一个打包实用程序,它基本上获取两个 SVN 修订版之间所有添加/修改的文件,然后将它们复制到本地并压缩它们。到目前为止,我已经能够成功提取两个修订版之间的所有更改文件。

更进一步,我使用 xcopy 在某个目录中递归地创建文件夹。

假设当我使用 svn diff 命令检查两个修订版时,以下文件已更改

/temp1/temp2/temp3/temfile.txt
/temp1/temp21/temp31/tempfile.txt
/temp1/temp2/ (folder created)
/temp1/temp2/temp3 (folder created)

为了让 XCopy 工作,我正在做

xcopy local/svn/copy/path d:/{folderpath} 

其中文件夹路径需要从上述更改列表中提取,例如

xcopy "C:/LocalSVN/temp1/temp2/temp3/temfile.txt" "d:/temp1/temp2/temp3/"

我需要在我的批处理文件中,仅提取文件夹路径并删除文件名。在批处理文件中执行此操作的最佳方法是什么?

有没有不同的方法来实现我想要做的事情?

4

2 回答 2

2

这与如何在批处理文件中获取目录路径的一部分几乎相同

关键是使用 %~dp 功能,因为这仅适用于参数(而不是变量),您可以使用 FOR 循环或子例程将变量移动到参数中。

@echo off
set "testString=/temp1/temp2/temp3/temfile.txt"

call :GetPath returnVal "%testString%"
echo %returnVal%
exit /b

:GetPath
set "%1=%~dp2"
exit /b
于 2011-10-05T06:59:56.927 回答
0
@echo off
setlocal
SET SUBDIR=%~dp0
call :parentfolder %SUBDIR:~0,-1% 
endlocal
goto :eof

:parentfolder
echo %~dp1
goto :eof
于 2011-10-06T16:56:48.490 回答