我正在寻找一种更简洁的方法来执行此操作。我很确定这是错误的,即使它有点管用。基本上我从文件 (temp.txt) 中获取这样的输出:
Host Name: IBM-3J93A46MRS5
OS Name: Microsoft Windows 7 Professional
OS Version: 6.1.7631 Service Pack 1 Build 7601
OS Configuration: Standalone Workstation
Registered Owner: IAMADMIN
Original Install Date: 2011-12-15, 10:56:07 AM
System Boot Time: 2013-05-27, 9:55:36 AM
System Manufacturer: DELL
System Model: 4009BF7
Time Zone: (UTC-05:00) Eastern Time (US & Canada)
Total Physical Memory: 16,316 MB
Available Physical Memory: 11,356 MB
并尝试将第二列数据放入变量中。取决于我愿不愿意。我正在使用 Findstr 进行筛选。
@echo off
setlocal enabledelayedexpansion
systeminfo > temp.txt
set "tmp_result_file=temp.txt"
for /f "tokens=3-7 delims= " %%i in ('FINDSTR /C:"OS Name:" %tmp_result_file%') do set "OSNAME=%%i %%j %%k %%l"
for /f "tokens=3-10 delims= " %%i in ('FINDSTR /V /C:"BIOS Version:" %tmp_result_file%^|FIND /I "OS Version:"') do set "OSVER=%%i %%j %%k %%l %%m %%n %%o %%p"
for /f "tokens=4-7 delims= " %%i in ('FINDSTR /C:"Original Install Date:" %tmp_result_file%') do set "INSTDATE=%%i %%j %%k %%l"
for /f "tokens=3-7 delims= " %%i in ('FINDSTR /C:"System Manufacturer:" %tmp_result_file%') do set "SYSMFG=%%i %%j %%k %%l"
for /f "tokens=3-7 delims= " %%i in ('FINDSTR /C:"System Model:" %tmp_result_file%') do set "SYSMDL=%%i %%j %%k %%l"
echo.
echo Operating System : %OSNAME% , %OSVER%
echo Original Install Date : %INSTDATE%
echo Model Information : %SYSMFG% %SYSMDL%
我不喜欢我如此精确地使用 token ,我只需要搜索值之后的所有内容。
最佳答案
不需要延迟扩展、临时文件或 FINDSTR,当然也不需要计算空格分隔的标记。您只需设置正确的 DELIMS 和 TOKENS 选项。第一个 FOR/F 处理 systeminfo 的输出并将每一行解析为名称和值。第二个 FOR/F 从每个值中去除前导空格。剩下的就是一系列 IF 语句来测试每个名称并适本地设置所需的变量。
@echo off
setlocal
for /f "delims=: tokens=1*" %%A in ('systeminfo') do (
for /f "tokens=*" %%S in ("%%B") do (
if "%%A"=="OS Name" set "OSNAME=%%S"
if "%%A"=="OS Version" set "OSVER=%%S"
if "%%A"=="Original Install Date" set "INSTDATE=%%S"
if "%%A"=="System Manufacturer" set "SYSMFG=%%S"
if "%%A"=="System Model" set "SYSMDL=%%S"
)
)
echo(
echo Operating System : %OSNAME%, %OSVER%
echo Original Install Date : %INSTDATE%
echo Model Information : %SYSMFG% %SYSMDL%
如果您想捕获更多值,可能需要指定搜索字符串:使用字符串的变量名称对,并添加一些额外的 FOR 循环来处理每个测试,如下所示:
@echo off
setlocal
for /f "delims=: tokens=1*" %%A in ('systeminfo') do for %%S in (
"OS Name:OSNAME"
"OS Version:OSVER"
"Original Install Date:INSTDATE"
"System Manufacturer:SYSMFG"
"System Model:SYSMDL"
) do for /f "delims=: tokens=1*" %%a in ("%%~S") do if %%A==%%a (
for /f "tokens=*" %%s in ("%%B") do set "%%b=%%s"
)
echo(
echo Operating System : %OSNAME%, %OSVER%
echo Original Install Date : %INSTDATE%
echo Model Information : %SYSMFG% %SYSMDL%
关于regex - 在批处理脚本中打印第二个标记之后的所有标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17327512/
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我对图像处理完全陌生。我对JPEG内部是什么以及它是如何工作一无所知。我想知道,是否可以在某处找到执行以下简单操作的ruby代码:打开jpeg文件。遍历每个像素并将其颜色设置为fx绿色。将结果写入另一个文件。我对如何使用ruby-vips库实现这一点特别感兴趣https://github.com/ender672/ruby-vips我的目标-学习如何使用ruby-vips执行基本的图像处理操作(Gamma校正、亮度、色调……)任何指向比“helloworld”更复杂的工作示例的链接——比如ruby-vips的github页面上的链接,我们将不胜感激!如果有ruby-
我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d
classPacketdefinitialize(name,age,number,array)@name=name@age=age@number=number@neighbors=arrayendendp1=Packet.new("n1",5,2,[1,2,3,4])putsp1.name我有上面的代码,但是每当我执行puts语句时,我都会收到nameisnotamethod的错误。我不知道任何其他方式来打印p1的名称。如何打印姓名? 最佳答案 这里的问题是,虽然您拥有实例变量,但您并未使它们可访问。attr_reader:vari
我最近与一位同事讨论了以下Ruby语法:value=ifa==0"foo"elsifa>42"bar"else"fizz"end我个人并没有看到太多这种逻辑,但我的同事指出,这实际上是一种相当普遍的Rubyism。我试着用谷歌搜索这个主题,但没有找到任何文章、页面或SO问题来讨论它,这让我相信这可能是一种非常实际的技术。然而,另一位同事发现语法令人困惑,而是将上面的逻辑写成这样:ifa==0value="foo"elsifa>42value="bar"elsevalue="fizz"end缺点是value=的重复声明和隐式elsenil的丢失,如果我们想使用它的话。这也感觉它与Ruby
我正在使用mechanize登录网站,然后检索页面。我遇到了一些问题,我怀疑这是由于cookie中的某些值造成的。当Mechanize登录网站时,我假设它存储了cookie。如何通过Mechanize打印出存储在cookie中的所有数据? 最佳答案 代理有一个cookie方法。agent=Mechanize.newpage=agent.get("http://www.google.com/")agent.cookiesagent.cookies.to_scookie返回一个Mechanize::Cookiesobject
我正在尝试解析网页,但有时会收到404错误。这是我用来获取网页的代码:result=Net::HTTP::getURI.parse(URI.escape(url))如何测试result是否为404错误代码? 最佳答案 像这样重写你的代码:uri=URI.parse(url)result=Net::HTTP.start(uri.host,uri.port){|http|http.get(uri.path)}putsresult.codeputsresult.body这将打印状态码和正文。
我正在尝试用Ruby(Rails)编写一个正则表达式,以便用户名的字符仅包含数字和字母(也没有空格)。我有这个正则表达式,/^[a-zA-Z0-9]+$/,但它似乎没有用,我在Rails中收到一个错误,说“The如果正则表达式使用多行anchor(^或$),这可能会带来安全风险。您是要使用\A和\z,还是忘记添加:multiline=>true选项?"我的user.rb模型中此实现的完整代码是:classUser我做错了什么以及如何修复此正则表达式,使其仅对数字和字母有效而不对空格有效?谢谢。 最佳答案 简短回答:使用/\A[a-z
我想在Windows7上安装带有ruby1.9.3的rspec-railsgem。我收到一些错误消息,提示无法安装某些json库。所以,我使用下面的说明来解决它。来源=The'json'nativegemrequiresinstalledbuildtools从[rubyinstaller.org][3]下载[Ruby1.9.3][2]从[rubyinstaller.org][3]下载DevKit文件对于Ruby1.9.3,使用[DevKit-tdm-32-4.5.2-20110712-1620-sfx.exe][4]将DevKit解压到路径C:\Ruby193\DevKit运行cd