2

svn updateコマンド出力からリビジョン番号を取得しようとしています。ファイルtmpFile.txtに文字列がありますAt revision 58998.

次のコマンドを実行しました。

findstr /r "\<[0-9][0-9]*\>" "tmpFile.txt"

そして私は持っています

At revision 58998.

また、

findstr /r /o "\<[0-9][0-9]*\>" "tmpFile.txt"

私は得る

0:At revision 58998.

何が起こっているのですか、どうすれば番号だけを取得できますか?

4

2 に答える 2

3

FINDSTRは、一致する行全体を印刷します。行の一致する部分だけを抽出することはできません。

FOR / Fを使用して出力を解析し、数値だけを取得できます。

for /f "tokens=3 delims=. " %%A in (
  'findstr /rc:"At revision [0-9][0-9]*\." "tmpFile.txt"'
) do echo %%A
于 2013-01-10T12:24:09.967 に答える
1

解決策ではありませんfindstrが、機能します:)

setlocal enabledelayedexpansion
for /f "tokens=3" %%a in (tmpFile.txt) do (
set num=%%a
set num=!num:.=!
)
echo !num!

これにより、も最後から削除さ.れます。

.使用を気にしない場合

for /f "tokens=3" %%a in (tmpFile.txt) do echo %%a

またはcmd行の場合(バッチなし)

for /f "tokens=3" %a in (tmpFile.txt) do echo %a
于 2013-01-10T10:50:22.043 に答える