2

コマンドsvn statusは次のようなものを返します。

?       SomeClient\BUTCHERED.docx
M       SomeClient\Development notes.txt
?       SomeClient\Received\~$formation for prospective clients.docx
M       SomeClient\Sales\Estimates.xlsx
M       SomeClient\Sales\Specification.docx
?       SomeClient\Sales\~$Estimates.xlsx
?       SomeClient\Sales\~$ecification.docx
?       SomeClient\removed.docx
?       SomeClient\site spec1.docx
?       SomeClient\~$TCHERED.docx
?       SomeClient\~$emoved.docx
?       SomeClient\~$te spec1.docx

これによると、最初の5列は1文字幅です。

ファイル名のみをテキストファイルに出力するにはどうすればよいですか?これは私が持っているものです:

for /F "tokens=2*" %%U in ('svn status C:\SVN-EDGE') do echo %%U

ただし、ファイル名のスペースにヒットするとすぐに、エコーが停止します。に変更するとdo echo %%U %%V、正しい出力が得られます。

これは正しい方法ですか?私はしばらくの間、トークンとデリムをいじっています。

ありがとう!

4

1 に答える 1

7

*新しい変数を割り当てます。

トークン1をマップして%%A、それを無視して使用します%%B

for /F "tokens=1*" %%A in ('svn status C:\SVN-EDGE') do echo %%B

withtokens=2* %%Uはトークン2と%%V一致し、*


最初の部分が常に同じ長さである場合は、遅延部分文字列を使用してスキップできます。!line:~8!

setlocal EnableDelayedExpansion

for /f "delims=" %%a in ('svn status C:\SVN-EDGE') do (
    set line=%%a
    set line=!line:~8!
    echo !line!
)

set /?遅延拡張と変数操作の詳細については、を実行してください。

于 2013-01-12T17:24:22.163 に答える