此问题与this question.
非常相似我一直在试图计算括号之间出现多少字符串。考虑以下文本文件(虽然它看起来像.bat脚本)
(
echo a
echo b
echo c
)
echo z
在上面的文件中,我们可以看到4 echo
,但我只想计算括号内的那些(结果应为3)
for /f "delims=][ tokens=2" %%H in ('FART.exe -c -i -p %File% ^( a') do set /a count+=1
此代码有效,但只有1,因为我无法弄清楚如何计算多个外观。请帮助我,任何帮助将不胜感激。
修改 - 5/7/17
你可以假设
echo
。echo
与括号不会出现在同一行
echo
答案 0 :(得分:1)
你可以试试这个正则表达式:
echo(?=((?!\().)*\))
单词' echo'的匹配数量内括号将是你的计数
因为,Windows批处理不支持前瞻,因此您可以使用python脚本用于相同的目的,而不是使用批处理,如果您必须应用正则表达式。另外,您可以批量尝试非正则表达式解决方案
此块将执行:(run here)
regex = r"echo(?=((?!\().)*\))"
matches = re.finditer(regex, test_str, re.DOTALL)
count=0
for match in matches:
count +=1
print(count)
其中test_str是文件的内容
答案 1 :(得分:1)
对于那些期望批处理文件的人,比SteveFest更尊重规则,这是一个基本的例子,(可能不是最有效的,但嘿,这种任务不会被设计对于大文件无论如何):
private void updateGetData(EventType e)
{
try
{
Realm realm = Realm.GetInstance();
realm.WriteAsync(tempRealm =>
{
if (Settings.IsSingleOpportunityUpdated == false)
{
tempRealm.Add(e.response, true);
}
else if (Settings.IsSingleOpportunityUpdated)
{
if (e.response != null && e.response.opportunitiesList.Count > 0)
{
long opportunityId = e.response.opportunitiesList[0].opportunityId;
var opportunity = tempRealm.All<Opportunity>().FirstOrDefault(d => d.opportunityId == opportunityId);
e.response.opportunitiesList[0].isOpportunitySync = 0;
e.response.opportunitiesList[0].isSync = SyncStatus.SYNCED;
e.response.opportunitiesList[0].mOpportunityId = opportunity.mOpportunityId;
Debug.WriteLine("Opportunity Id after getOpportunity " + opportunity.opportunityId + " " + opportunityId + " " + e.response.opportunitiesList[0].isSync);
tempRealm.Add(e.response.opportunitiesList[0], true);
}
else
{
Debug.WriteLine("RealmDB opportunity response is empty " + Settings.IsSingleOpportunityUpdated);
}
}
});
}
catch(Exception exception)
{
Debug.WriteLine("RealmDB " + exception.StackTrace);
}
}
答案 2 :(得分:1)
您的规格不完整,因为如上所述,此问题可以简化为:计算左侧和右侧之间的行数:
@echo off
setlocal
set "open="
for /F "delims=:" %%a in ('findstr /N "( )" test.txt') do (
if not defined open (
set "open=%%a"
) else (
set /A count=%%a-open-1
)
)
echo %count%