Batch file 批处理文件以读取文件并执行某些操作

Batch file 批处理文件以读取文件并执行某些操作,batch-file,cmd,Batch File,Cmd,我编写了一个批处理文件来读取生成的文件中的文本,如果它找到了名为: “许可证错误” 此外,我需要重新运行批处理文件,直到文本字符串不再存在。 每当没有可用于运行作业的许可证时,就会发生许可证错误。 但我希望它一直检查,直到许可证可用,然后它将运行作业 下面是我的代码,它不工作,因为错误级别总是零,并且它似乎没有读取生成的文本文件。 使用&&尝试此代码以测试findstr结果: 并添加文件NETWORK.TXT的完整路径(如果不在同一文件夹中) :case1 :: add this next l

我编写了一个批处理文件来读取生成的文件中的文本,如果它找到了名为:

“许可证错误”

此外,我需要重新运行批处理文件,直到文本字符串不再存在。 每当没有可用于运行作业的许可证时,就会发生许可证错误。 但我希望它一直检查,直到许可证可用,然后它将运行作业

下面是我的代码,它不工作,因为
错误级别总是
零,并且它似乎没有读取生成的文本文件。


使用&&尝试此代码以测试findstr结果:

并添加文件NETWORK.TXT的完整路径(如果不在同一文件夹中)

:case1
:: add this next line to see results :: 
timeout /t 1 
call pclrun -v 2017.2 fortrans "H:\Fortran_Folder\test_data\NETWORK"  
findstr /M /C:"LICENSE ERROR" "H:\Fortran_Folder\test_data\NETWORK\NETWORK.TXT" >nul && goto :case1
注意事项:
1-请注意您在以下内容中的引用:
“H:\
这与
“H:\
不同

2-您可能需要等到调用pclrun完成后才能执行findstr


尝试替换调用启动“”/w pclrun…

使用&&尝试此代码以测试findstr结果:

并添加文件NETWORK.TXT的完整路径(如果不在同一文件夹中)

:case1
:: add this next line to see results :: 
timeout /t 1 
call pclrun -v 2017.2 fortrans "H:\Fortran_Folder\test_data\NETWORK"  
findstr /M /C:"LICENSE ERROR" "H:\Fortran_Folder\test_data\NETWORK\NETWORK.TXT" >nul && goto :case1
注意事项:
1-请注意您在以下内容中的引用:
“H:\
这与
“H:\
不同

2-您可能需要等到调用pclrun完成后才能执行findstr


尝试替换调用启动“”/w pclrun…

"
。请确保批处理文件只包含直接的双引号。接下来,命令
findstr
将像
LICENSE ERROR
这样的搜索字符串解释为正则表达式,仅在双引号中指定,以搜索
LICENSE
ERROR
。您需要的是使用
%S进行区分大小写的文字搜索ystemRoot%\System32\findstr.exe/L/M/C:“许可证错误”NETWORK.TXT>nul
/L
实际上并不需要,因为用
/C:
指定的搜索字符串在默认情况下被解释为逐字解释的搜索字符串。但是
/C:
也可以与
/R
一起使用,以指定包含未解释为或的空格字符的正则表达式字符串。
findstr/m“许可证错误”NETWORK.TXT
在当前目录中名为
NETWORK.TXT
的文件中的任意位置搜索大写字符串
LICENSE
或大写字符串
ERROR
,并输出文件名
NETWORK.TXT
,如果这两个字符串中的任何一个匹配。我认为这不是您想要的!有ally在这里不需要使用ErrorLevel,我会选择一个条件方法,
FindStr/IMC:“LICENSE ERROR”“Network.txt”>Nul&&GoTo case1
因此,最好的做法是始终指定
/L
/R
,以使
findstr.exe
以及命令的每个读卡器100%清楚搜索字符串是否应解释为文字字符串或正则表达式字符串。请注意,今后在搜索中应使用空格只有
“…”
的字符串被解释为或当搜索字符串中的空格用
/C:“…”指定时
被解释为文本空间。最后,我建议在命令提示窗口中运行
if/?
,阅读输出帮助,并使用
if not error level 1 goto case1
即使在命令块中也可以使用
:case1
findstr
的退出代码中转到行下的行,即等于10表示
findstr
退出代码。另请参阅,以了解评估应用程序退出代码等于0或不等于0的替代解决方案。
"
。请确保批处理文件只包含直接的双引号。接下来,命令
findstr
将像
LICENSE ERROR
这样的搜索字符串解释为正则表达式,仅在双引号中指定,以搜索
LICENSE
ERROR
。您需要的是使用
%S进行区分大小写的文字搜索ystemRoot%\System32\findstr.exe/L/M/C:“许可证错误”NETWORK.TXT>nul
/L
实际上并不需要,因为用
/C:
指定的搜索字符串在默认情况下被解释为逐字解释的搜索字符串。但是
/C:
也可以与
/R
一起使用,以指定包含未解释为或的空格字符的正则表达式字符串。
findstr/m“许可证错误”NETWORK.TXT
在当前目录中名为
NETWORK.TXT
的文件中的任意位置搜索大写字符串
LICENSE
或大写字符串
ERROR
,并输出文件名
NETWORK.TXT
,如果这两个字符串中的任何一个匹配。我认为这不是您想要的!有ally在这里不需要使用ErrorLevel,我会选择一个条件方法,
FindStr/IMC:“LICENSE ERROR”“Network.txt”>Nul&&GoTo case1
因此,最好的做法是始终指定
/L
/R
,以使
findstr.exe
以及命令的每个读卡器100%清楚搜索字符串是否应解释为文字字符串或正则表达式字符串。请注意,今后在搜索中应使用空格只有
“…”
的字符串被解释为或当搜索字符串中的空格用
/C:“…”指定时
被解释为文本空间。最后,我建议在命令提示窗口中运行
if/?
,阅读输出帮助,并使用
if not error level 1 goto case1
即使在命令块中也可以使用
:case1
findstr
的退出代码中转到行下的行,即等于1