批处理脚本 - FINDSTR结束结果?

时间:2014-01-30 02:52:54

标签: windows batch-file findstr

我有一个输出

的备份脚本

Backup %DIRNAME% %TIME% >>Results.txt 这看起来像:

备份B:\ Backup \ Documents 92

现在我想知道我如何只提供完成时间的输出

我试过了 FINDSTR /r "^[1-9][0-9]*$ ^0$" results.txt

但这没有任何作用 我知道这是有效的,因为如果我使用rand num创建一个rand.txt,findstr输出该文件中的内容。 也许文件中最后一个条目有一个

喜欢FINDSTR "[1-9][0-9]\.$" results.txt

- 后来在命令提示符中我们可以做到

FOR /F "eol=; tokens=3* delims=, " %i in (results.txt) do @echo %j %k

实际上可以像

一样简单

FOR /F " tokens=3* delims=, " %I in (results.txt) do @echo %I>timeresult

type timeresult

这也意味着我们可以将随机结果连接到.txt,但是我们想要在开始时记住不要放置的结果。

仍然将其格式化为批处理?

还出现了一个新问题,如何将其置于变量中?

我的猜测是

FOR /F "eol=; tokens=3* delims=, " %i in (results.txt) do ( set result= %j %k


已经回答了: 是的,回答了我自己的问题...... 不知道为什么我试图使事情复杂化。

因此,此抓取令牌3在结果中为时间设置var T,然后使可用的变量稍后

FOR / F“tokens = 3”%% T in(results.txt)do(set vartmp = %% T)

令人惊讶的是,当你走开,喝咖啡,做其他事情时会发生什么。你就是为什么......我不是那么打字。

感谢大家的评论,很高兴看到其他人的想法和意见,赞赏。

2 个答案:

答案 0 :(得分:0)

这将在行

上给出最后一组数字
type Results.txt|repl "^.* (\d+).*$" "$1" >newfile.txt

这使用名为repl.bat的帮助程序批处理文件 - 从https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

下载

repl.bat放在与批处理文件相同的文件夹中或放在路径上的文件夹中。

根据评论编辑:

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
FOR /f "delims=" %%a IN (q21446192.txt) DO CALL :lastnum %%a

GOTO :EOF

:lastnum
SET "elapsed=%~2"
IF DEFINED elapsed shift&GOTO lastnum
SET "elapsed=%~1"
SET /a total=0
:numlp
FOR /l %%n IN (0,1,9) DO IF "%elapsed:~0,1%"=="%%n" SET /a total=%%n+10*total&SET elapsed=%elapsed:~1%&GOTO numlp
if "%elapsed%"=="%~1" GOTO :eof
ECHO %total%
GOTO :eof

我使用名为q21446192.txt的文件进行测试,其中包含您提供给我们的一个数据项。它产生了92

%time%是一个神奇的变量。 CMD会将其设置为用户格式的当前时间,但会被用户设置的变量覆盖。它被认为是SO的默认值。