草庐IT

if-condition

全部标签

windows - IF/Else 和 Goto 问题

我一直在努力尝试将这个批处理脚本放在一起来检查一个进程(它可以是任何进程)。计算它正在运行的实例数并保存该计数的输出。如果它没有运行(计数为0)那么它很好,但如果它正在运行(1或更大)但在这种情况下低于说“5”,让它回显一个语句。每次我尝试这样做时,我要么得到'else'isnotrecognizedasaninternalorexternalcommand,operableprogramorbatchfile要么当脚本到达goto:problem时,它似乎完全忽略了else语句。@echoofffor/f%%gin('tasklist/FI"IMAGENAMEeqchrome.exe

windows - 根据批处理文件中的 IF ELSE 条件设置变量不同的值

我的目标是在x64机器上将%PF%变量设置为C:\ProgramFiles(x86)\MSBuild\,在x86机器上设置为C:\ProgramFiles\MSBuild\。我可以很容易地实现这种方式IFDEFINEDProgramFiles(x86)SETPF=%ProgramFiles(x86)%\MSBuild\IFNOTDEFINEDProgramFiles(x86)SETPF=%ProgramFiles%\MSBuild\但我想在单个IFELSE语句中完成此操作。那个IFDEFINEDProgramFiles(x86)(SETPF=%ProgramFiles(x86)%\MS

windows - 我如何在某些 'if' 语句中使用 Windows 版本标题来确定要检查哪些 Windows 更新?

我正在编写一个令人遗憾的脚本,旨在基本上从Windows7、8和8.1中消除Windows10的任何痕迹。几乎是this的脚本版本程序。脚本即将完成(我认为),但似乎我的某些if语句中的逻辑即使变量不正确也会执行。这里是要记住的部分,为了清楚起见,在脚本的前面添加了创建$Caption变量的行:$Caption=(Get-WmiObjectwin32_operatingsystem).captionif($Caption='Windows8.1Professional'){if(Get-Hotfix-idKB3044374){Wusa/uninstall/kb:3044374/quie

windows - 命令不在 .BAT if 语句中执行

我有一个批处理文件,它将检查CPU架构(32位或64位),并相应地执行命令。它将找到特定的文件夹并执行某些.exe文件。我的问题是,如果我在if语句中有一个语句,例如。'echoSometext',它会显示正常,这意味着对架构的检查没有问题。但是只要我的If语句中有多个命令,批处理文件就会立即退出。到目前为止我的代码:@echooffSET"ARCH=x64"IFNOTEXIST"%SystemRoot%\SysWOW64\cmd.exe"(IFNOTDEFINEDPROCESSOR_ARCHITEW6432SET"ARCH=x86")IF"%ARCH%"=="x64"(cd\cdPr

windows - Powershell If 语句不接受多个 OR 条件

我有一个处理大量DNSA记录的powershell脚本,我正在尝试过滤掉默认记录(即“@”、“ForestDNSZones”等)。只是用一个简单的if语句来尝试这个似乎不起作用。代码示例:$zoneARecords=Get-DnsServerResourceRecord-ComputerName$DNSserver-ZoneName$zoneName|?{$_.RecordType-eq"A"}foreach($recordin$zoneARecords){$hostName=$record.HostNameif($hostName-ine"gc"-or"DomainDnsZones"

windows - 批处理文件,字符串变量比较,if语句

我试图用一个简单的字符串来比较一个文件的日志,但是它没有进入if比较。我在echo语句中将“connectfailed”作为我的第二个令牌,但没有得到if语句的任何结果。@echooffremstartcmd.exefor/f"tokens=2delims=:"%%nIN(C:\Users\rohit.bagjani\Desktop\result\telnetresult.txt)DO(SETstr1="Connectfailed"echo%%nif\i%str1%==%%necho"true")echo.pause 最佳答案 第一

windows - std::condition_variable notify_all 不会同时唤醒所有线程

我想知道std::condition_variablenotify_all如何通知所有线程唤醒。情况是我有一个主线程,一个渲染线程,每个线程都有自己的线程池来完成它需要的任何工作。例如,如果我有6个逻辑核心,则每个线程池将有6个工作线程。这些线程使用notify_all唤醒。每个线程池都有自己的条件变量/互斥锁组合,并且完全独立,因此它们不会相互冲突。我遇到的问题是,有时,当渲染线程调用notify_all来唤醒工作线程时,一些会立即被唤醒,而另一些则需要很长时间,大约几毫秒。我还注意到,这主要发生在这些线程被唤醒时,而主线程worker正忙于做自己的工作。因此,在负载很重的时候,当每

c - Detecting if stdout is a console with MS Visual compilation, mingw64提供的console

我维护一个生成二进制数据的命令行实用程序。请求时,数据可以重定向到stdout。这在stdout被重定向到管道或文件时有效,但当stdout是一个控制台时,情况就不太一样了,因为它会垃圾控制台。为了保护用户免受此类错误,程序必须检测stdout是否是控制台,并在是时退出。现在,这并不是什么新鲜事,快速浏览一下Internet就会发现多种解决方案。主要缺点是没有“通用”方法,VisualStudio需要自己的风格。我用于Visual的控制台检测器有一个缺陷:它没有检测到stdout是一个控制台当控制台由mingw提供时,我认为这意味着它是mintty。这里是相关的代码部分:#ifdefi

windows - 使用命令行的引用参数时如何进行条件检查(if 命令)?

在我的批处理文件中我有脚本:setmyVar=/someLabel:"%1"我想为上面的脚本编写if命令,其含义与下面相同。if{myVar=/someLabel:"%1"}else{myVar=""}我该怎么做?[编辑]用户hfs的回答对我有用。if的完整详细信息和set命令由用户DaveAnderson列出。 最佳答案 setmyVar=ifnot"%1"==""setmyVar=/someLabel:%1 关于windows-使用命令行的引用参数时如何进行条件检查(if命令)?,我

windows - 批量条件错误也执行if语句

SETvar=%6IFNOT"%var%"==""(@ECHO"ijklkmn"EXITIF%var:~-2,1%==\SETvar=%var:~0,-2%")如果%6未定义,则@ECHO"ijklkmn"不会执行。但为什么我仍然得到Thereshouldbeno1var:~0。错误??? 最佳答案 有一些批处理的复杂性导致了您的问题。1)括号内的block在一次传递中被解析。在执行IF测试之前,您的整个IFblock必须解析为有效语法。2)如果变量未定义,子字符串扩展会做一些奇怪的事情。解析器将%var:展开为空,留下子字符串表达