2012-01-09 10 views
2

バッチファイルを使用して、私のSVNリポジトリで変更されたファイルのみを更新しています。これは私のバッチファイルの一部です:バッチFOR/Fとファイル/パス名のスペースとトークンの使用?

SET CHANGES=svnlook changed c:\myrepository 
FOR /F "usebackq tokens=2" %%a IN (`%CHANGES%`) DO (echo %%a) 

私だけDOK代わり version1.txt DOKのを取得し、私は、スペースのザッツを推測します。スペースがあってもファイル名を取得するためにコードをどのように変更する必要がありますか?それはトークンのためか、それはどこの名前を切るのでしょうか?

svnlookの出力は次のようになります。

D Testprojekt /トランク/ DOK - Kopie(2)
D Testprojekt /トランク/ DOKを.txtで - Kopie(3)
D Testprojekt /トランクを.txtで/ dok - Kopie(4).txt

私はトークンを使用してパス(Testprojekt/trunk/dok-Kopie(2).txt)を取得し、アクションはしません(例:D =削除)。

ありがとうございます!

+0

B %%にD

  • ストア行の残りの部分は、あなたが質問を編集して、生のsvnlookの出力のサンプルを追加してくださいことはできますか? –

  • +0

    はい、私は出力を追加しました... – EOB

    答えて

    3

    は、使用してみてください:

    FOR /F "usebackq tokens=1,*" %%a IN (`%CHANGES%`) DO (echo %%b) 
    

    これは、この出力では%bの

    +0

    ええ、それはスタートです、私は今正しい方法でパスを取得...さらにテストするために私にいくつかの秒を与えます。 – EOB

    +0

    Dammit、私はいくつかの研究をしている間に答えを得たxD –

    +0

    それはそうだった:) – EOB

    2

    つまり次の文字への%aと後続のすべてのものへの最初のトークン割り当て:

    D Testprojekt/trunk/dok - Kopie (2).txt 
    D Testprojekt/trunk/dok - Kopie (3).txt 
    D Testprojekt/trunk/dok - Kopie (4).txt 
    

    を..あなたはこれを試すことができます:

    FOR /F "usebackq tokens=1*" %%a IN (`%CHANGES%`) DO (
        echo %%b 
    ) 
    

    tokens=1*ビットの意味:

    1. ストア最初のトークンに%%(すなわち
    関連する問題