对于/ F(/ w findstr)命令仅打开.TXT文件

时间:2018-04-04 13:07:56

标签: batch-file

我想用/ f来读取txt。使用findstr的文件。但它只是  打开txt文件,如果我删除(')我的管道不起作用。

set PATH_TEMPTXT=C:\Users\User\Desktop\Temp_txt.txt

for /f "tokens=1,2 delims= " %%a in ('%PATH_TEMPTXT% ^| findstr "Files:"') do (
        set F_Files=%%b
        echo TEST   FILES           %%b
    )

for /f "tokens=1,2 delims= " %%a in ('%PATH_TEMPTXT% ^| findstr "Size:"') do (
        set F_Size=%%b
        echo TEST   SIZE            %%b
    )


echo FILES              %F_Files%
echo SIZE               %F_Size%

我做错了什么?

这是txt文件:

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21

Scanning the drive for archives:
1 file, 929654 bytes (908 KiB)

Extracting archive: C:\Users\User\Downloads\test\DIEZIP.7z
--
Path = C:\Users\User\Downloads\test\DIEZIP.7z
Type = 7z
Physical Size = 929654
Headers Size = 1953
Method = LZMA2:23
Solid = +
Blocks = 5

Everything is Ok

Folders: 20
Files: 129
Size:       15270523
Compressed: 929654

我想要文件计数(129)和大小(15270523)

编辑我如何得到我的temp_txt

仅供参考:脚本使用7ZIP将文件/目录列表从源目录复制到目标目录 文件在目的地打包和解压缩

REM unzip
:: set Path for temp_txt
set PATH_TEMPTXT=%SOURCE_PATH%\Temp_txt.txt
:: get temp txt with copied files and size
:: I unzip my zip and direct the output into my temp_txt so I can get the filescount and size with the code above
%PATH_7Z% x -y -o%f_ziel% %PATH_ZIP% > %PATH_TEMPTXT%

1 个答案:

答案 0 :(得分:1)

使用FINDSTR命令可以通过3种方法解析输出。您可以直接PIPE,REDIRECT或列出文件。你管道不正确。您需要使用带有文件名的TYPE命令将其PIPE传递给FINDSTR。管道的一个警告是它比重定向或直接访问文件慢。

无论如何,此代码简化了您现有的代码。

@echo off
set PATH_TEMPTXT=C:\Users\%username%\Desktop\Temp_txt.txt

for /f "tokens=1,2 delims=: " %%a in ('findstr /B "Files: Size:" "%PATH_TEMPTXT%"') do (
    set F_%%a=%%b
)

echo FILES              %F_Files%
echo SIZE               %F_Size%
pause