我知道这种问题对你来说很容易,但我是批处理模式的初学者。
问题是bat文件代码应该如何从特定文件生成新的txt文件。
例如。
我有报告txt
Displaying status for license file: 7788@Server01
License Server: server01
License In Use Free
------- ------ ----
Design* 1 6
(user1@host1) 127 server01 7788 4402
Assembly* 0 4
Pro 0 15
AdvSE 2 3
(user2@host2) AdvSE server01 7788 2706
(user3@host3) AdvSE server01 7788 1503
SingleSite_License 1 3
(user4@host4) SingleSite_License server01 7788 2003
Intra_CLIENT_License 1 4
(user2@host2) Intra_CLIENT_License server01 7788 2003
CAD 1 32
^(user2@host2) CAD server01 7788 501
* = License Extensions - Available only on startup.
^ = Borrowed License.
Press any key to continue . . .
我想从这个文件中获得的新文件只有一行:
SingleSite_License 3
Intra_CLIENT_License 9
但是SingleSite_License和Intra_Client_License都应该从第一个找到的字符串中取出 - 其他都不是必需的。
报告txt可以不同,许可证可以按不同的顺序显示。
如果不可能 - 其他解决方案可能只是自由值将写入新的txt文件 - f.e 3和9。所以行中的最后一个字符串包含特定的单词
感谢您提供任何提示
答案 0 :(得分:2)
不确定9
的{{1}}的数字在哪里(不是Intra_CLIENT_License
?),但是此脚本会打印出这两种产品的免费许可证代码:
4
我基本上将您的成绩单剪切并粘贴到@echo off
setlocal enableextensions enabledelayedexpansion
for /f "tokens=1,3" %%a in ('type infile.txt') do (
if "x%%a"=="xSingleSite_License" (
echo %%a %%b
)
if "x%%a"=="xIntra_CLIENT_License" (
echo %%a %%b
)
)
endlocal
文件中并运行此脚本以获取:
infile.txt
(您可以使用生成该输出所需的任何命令替换SingleSite_License 3
Intra_CLIENT_License 4
。
故障:
type infile.txt
只设置setlocal
以允许扩展和延迟扩展环境变量。我的所有脚本都以此开头,因为它非常有用。
cmd.exe
循环基本上一次处理一行,从每个行中抓取代币1和3(for
和a
)。
然后检查b
所需的许可证值是一件简单的事情,如果匹配,则将其与a
一起输出。
答案 1 :(得分:0)
编写C应用程序。批处理是不必要的kludgy,甚至可能甚至不能进行这种流操作。
答案 2 :(得分:0)
下载UnxUtils并使用Unix流处理器。也可能与Powershell有关。