我一直致力于构建一个打包实用程序,它基本上可以在两个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/"
我需要在我的批处理文件中,只提取文件夹路径并删除文件名。在批处理文件中执行此操作的最佳方法是什么?
有没有不同的方法来实现我想要做的事情?
答案 0 :(得分:2)
与How to get a Part of the Directory path in a batch file
几乎相同关键是使用%~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
答案 1 :(得分:0)
@echo off
setlocal
SET SUBDIR=%~dp0
call :parentfolder %SUBDIR:~0,-1%
endlocal
goto :eof
:parentfolder
echo %~dp1
goto :eof