私はSVN制御下でいくつかのphp
プロジェクトを持っています。私はクライアントサイドで更新後にコンパイルされたphp-templateファイルを削除したい。これらのファイルは./tmp/smarty/compile
フォルダにあります。ですから、Windowsのコマンドラインを使って私はこれを行うことができますプロジェクトプロパティのTortoiseSVNクライアント側のフック(キャッシュファイルの削除)
del /Q path_to_my_project\tmp\smarty\compile
このコマンドをcmd.exeで実行すると、すべてのファイルが正常に削除されます。
プロジェクトプロパティの使用tsvn:postupdatehook
プロジェクトパスには、%REPOROOT%
プレースホルダを使用します。ので、私のコマンドは次のようになります。
del /Q %REPOROOT%\tmp\smarty\compile
del
はcmd.exe
コマンドですので、私は最初cmd.exe
を実行し、目的のコマンドを実行する必要があります。そう最終的には私のフックコマンドは次のようになります。
cmd.exe /c del /Q %REPOROOT%\tmp\smarty\compile
私は(reporoot
との完全なパスに変更)Win+R
を使用して、これを実行すると、それはあまりにも正常に動作します。
は、それから私は(私は\
が/
にスラッシュ置き換える必要があり、overwise SNVリポジトリではなく、ローカルパスにhttp
-pathを返す)SVNのプロパティに次の行を入れて、プロジェクトを更新してみてください。だからここreporoot
が正常に作業コピーのパスを修正するために翻訳され
cmd.exe /c del /Q D:\_projects\webCakePHP\.....\tmp\smarty\compile
:私はフックを実行したい場合はTortoiseSVNは私に尋ねます。 すべてがうまく見えますが、このフックを実行すると、tmp\smarty\compile
のファイルは正常に削除されますが、の場合は、作業コピーディレクトリからすべてのファイルも削除されます。
質問は、私が間違っていると、正しい方法で更新後にファイルを削除する方法です。
私はいくつかの方法で引用符を入れようとしましたが、enythingをまったく削除しない、またはそのようなディレクトリがないと言います。
おかげで、私の質問への代替ソリューションとして
おそらく、パスの前後に引用符を付けるのに役立ちます: 'del/Q"%REPOROOT%\ tmp \ smarty \ compile "';そうでなければ、スペースや他のトークンセパレータが発生すると、 'del'はそれを複数のパスとして予期せず解釈します... – aschipfl
@aschipflパスに空白はありませんが、このような引用符は何もしません。私はパスと全体のdelコマンドと二重引用符delパスをエスケープして引用しようとしました:( – teran
引用パスは害を及ぼすことはありません、それは単に空白とのトラブルを回避し、特殊文字をエスケープする必要性を避ける... – aschipfl