ras*_*hok 52 windows cmd batch-file
我想计算文本文件中的行数,然后将值存储到环境变量中.计算行数的命令是
findstr /R /N "^" file.txt | find /C ":"
我提到了如何使用bat脚本将命令表达式的结果存储在变量中的问题? 然后我试过,
set cmd="findstr /R /N "^" file.txt | find /C ":" "
我收到错误消息,
FIND: Parameter format not correct
我怎么能摆脱这个错误.
use*_*771 92
有一种比所有其他方法简单得多的方法.
find /v /c "" filename.ext
Run Code Online (Sandbox Code Playgroud)
显然,从传统的MS-DOS时代保留.更多信息:http://blogs.msdn.com/b/oldnewthing/archive/2011/08/25/10200026.aspx
使用示例:
adb shell pm list packages | find /v /c ""
Run Code Online (Sandbox Code Playgroud)
如果您的Android设备已连接到您的PC并且您的路径上有Android SDK,则会打印出设备上安装的应用程序数量.
jeb*_*jeb 36
您可以使用FOR/F循环将输出分配给变量.
我使用了cmd-variable,因此不需要转义cmd-string中的管道或其他字符,因为延迟扩展将字符串"未更改"传递给FOR-Loop.
@echo off
cls
setlocal EnableDelayedExpansion
set "cmd=findstr /R /N "^^" file.txt | find /C ":""
for /f %%a in ('!cmd!') do set number=%%a
echo %number%
Run Code Online (Sandbox Code Playgroud)
Tin*_*nth 17
受以前帖子的启发,这样做的方式更短:
CMD.exe
C:\>FINDSTR /R /N "^.*$" file.txt | FIND /C ":"
Run Code Online (Sandbox Code Playgroud)
行数
试试吧.它适用于我的控制台.
(删除了"$"标志)
FINDSTR /R /N "^.*" file.txt | FIND /C ":"
Run Code Online (Sandbox Code Playgroud)
$将数字减少1,因为它接受第一行作为字段名称,然后计算行数.
试试这个:
@Echo off
Set _File=file.txt
Set /a _Lines=0
For /f %%j in ('Find "" /v /c ^< %_File%') Do Set /a _Lines=%%j
Echo %_File% has %_Lines% lines.
Run Code Online (Sandbox Code Playgroud)
它消除了额外的FindStr,不需要扩展.
- 编辑使用ChrisJJ的重定向建议.删除TYPE命令使其快三倍.