我想用/ 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%
答案 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