1

私は基本的に2つのSVNリビジョン間ですべての追加/変更されたファイルを取得し、それらをローカルにコピーしてzipするパッケージングユーティリティの構築に取り組んでいます。これまでのところ、2つのリビジョン間ですべての変更されたファイルを正常に抽出できました。

さらに、xcopyを使用して、特定のディレクトリにフォルダを再帰的に作成しています。

svn diffコマンドを使用して2つのリビジョンをチェックすると、次のファイルが変更されたと想定します

/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} 

上記の変更されたリストから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 に答える