2

バッチファイルを使用して、SVNリポジトリで変更されたファイルのみを更新しています。これは私のバッチファイルの一部です:

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

dok version1.txtの代わりにdokしか取得できませんが、スペースが原因だと思います。スペースがある場合でも、ファイル名を取得するためにコードを変更するにはどうすればよいですか?それはトークンのせいですか、それとも名前をどこで切り取ったのですか?

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

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

したがって、tokens = 2を使用して、パス(Testprojekt / trunk / dok-Kopie(2).txt)のみを取得し、アクション(D =削除など)は取得していません。

ありがとう!

4

2 に答える 2

3

使用してみてください:

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

これにより、最初のトークンが%aに割り当てられ、後続のすべてのトークンが次の文字、つまり%bに割り当てられます。

于 2012-01-09T12:38:52.230 に答える
2

この出力で:

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. 最初のトークンを%%aに保存します(つまりD
  2. 行の残りを%%bに格納します
于 2012-01-09T12:46:28.633 に答える