草庐IT

windows - 找出环境变量是否包含子字符串

我需要查明某个环境变量(比方说Foo)是否包含Windows批处理文件中的子字符串(比方说BAR)。有没有办法只使用批处理文件命令和/或Windows默认安装的程序/命令来做到这一点?例如:setFoo=Somestring;somethingBARsomething;blahif"BAR"in%Foo%gotoFoundIt要使这个简单的批处理文件打印“FoundBAR”,上面标记的行应该是什么? 最佳答案 当然,只需使用旧的findstr:echo.%Foo%|findstr/C:"BAR">nul2>&1&&echoFound

windows - 以 `EXIT/B X` 退出批处理,其中 X>=1 在使用 && 或 || 时就像命令成功完成一样批处理调用之间的运算符

我正在尝试使用EXIT/BX命令链接一系列.bat文件以返回成功或失败以及&&和||用于有条件地运行下一个.bat(例如a.bat&&b.bat)。无论我调用EXIT/B0还是其他任何方法来结束a.bat,a.bat&&b.bat都会在之后调用b.bat。我的理解是EXIT/B0应该设置ERRORLEVEL=0,这是成功的,所以&&应该继续。与此相反的是,调用EXIT/B1应该设置ERRORLEVEL=1这是失败的,所以&&应该停止。我在这里缺少什么?简单的例子:对于非批处理命令,按预期执行:C:\>echotest|findstrtest>NUL&&echoyesyesC:\>ech

windows - 从函数内部退出批处理脚本

我的批处理文件有问题。它通过执行以下操作自动构建多个程序:设置一些编译标志运行'gmakeall'调用“检查错误级别”函数,如果错误级别为1,则退出所以看起来像这样:setFLAG=1...gmakeallcall:interactive_checksetOTHERFLAG=1...gmakeallcall:interactive_check其中有6或7个(并且可能会增加)。所以我做了一个函数来检查错误级别,而不是在每一步都复制/粘贴它。问题是这样的:错误检查是通过一个函数进行的::interactive_checkiferrorlevel1(echo.echo/!\/!\/!\/!\

windows - 赢bat文件: How to add leading zeros to a variable in a for loop?

这个问题在这里已经有了答案:Stringprocessinginwindowsbatchfiles:Howtopadvaluewithleadingzeros?(8个答案)关闭5年前。很简单,我想...我需要通过将前导零添加到下面的循环索引变量(%%i)来获得一个可用变量。@echoofffor/L%%iin(1,1,5)do(echo%%iremHowtocreateavariablejhereasaremresultofaddingleadingzerosto%%i?(001,002,003etc.))pause如何?我已经尝试了以下方法,但我无法从%%i变量中获取值intevar

windows - 在 for 循环中初始化的批处理文件变量

我有一个批处理文件,它通过for循环内的SET为磁盘上的一组文件初始化变量:for%%fin(%MYTARGETDIR%\*config.xml)do(SETTMPFILE=%%F.tmpechoInloop%TMPFILE%)echoEndloop%TMPFILE%当我在一个全新的命令shell(没有定义TMPFILE)中运行它时,Inloopecho是空的,但结束循环echo不是。当我第二次运行时,它已经设置,并输出它的值,忽略设置直到循环关闭。为什么会这样,解决方法是什么? 最佳答案 作为记录,更正后的脚本如下所示:setlo

windows - 如何在cmd中使用默认应用程序打开文件?

我试图在用户创建文件后在其默认编辑器中打开该文件。到目前为止,我的脚本是:@echooff@echo---CreateANewFile---@echo-@echoWhereshouldweputthenewfile?set/pfileLocation=@%UserProfile%\@echo-@echoWhatdoyouwanttocallyournewfile?set/pfileName=@@echo-@echoAlmostDone!Whatisthefilesextension?set/pextension=@.@echo-copyNUL"%UserProfile%\%fileLo

.net - PowerShell 中的 echo 和 Write-Host 有什么区别?

我对PowerShell中echo和Write-Host的区别感到困惑。我有两个文件,POC.ps1和validatePath.ps1。这些文件在我的本地机器上,我使用Invoke-Command在远程机器上运行它们。我正在使用PowerShellv3.0。要执行这两个脚本,我使用命令:.\POC.ps1-filenameC:\Users-userBlaine这是两个文件:POC.ps1:param($filename,$user)echo$filenameecho"This"echo$user$responseObject=Invoke-Commandtestcomputer-Fil

windows - 使用 cmd.exe 将长文件名转换为短文件名 (8.3)

我正在尝试在Windows上将长文件名转换为短文件名(8.3)。带有命令行参数的批处理文件按预期工作:short.bat:@echoOFFecho%~s1调用short.batC:\DocumentsandSettings\User\NTUSER.DAT返回C:\DOCUM~1\USER\NTUSER.DAT但是,我不喜欢为此使用额外的.bat文件。我宁愿用ruby​​脚本中的整个命令调用cmd.exe。我该怎么做?作为中间步骤,我尝试在批处理文件中对路径进行硬编码,但这不起作用:short1.bat:@echoOFFSETfilename="C:\DocumentsandSettin

windows - 创建批处理脚本以在没有其他压缩工具的情况下解压缩文件

我正在尝试为Windows7x64制作一个.bat脚本来创建一个文件夹,将文件解压缩到该文件夹​​中,而无需使用其他插件,如7zip或unzip。一直在搜索,似乎Windows没有内置命令可以轻松解压缩。我可以在没有附加插件的情况下解压缩/展开文件吗? 最佳答案 试试这个:@echooffsetlocalcd/d%~dp0Call:UnZipFile"C:\Temp\""c:\path\to\batch.zip"exit/b:UnZipFilesetvbs="%temp%\_.vbs"ifexist%vbs%del/f/q%vbs%

windows - 如果大于批处理文件

我写了一个简单的批处理文件来运行基于数字选择的常用网站。这是我的代码。我正在尝试设置它,以便如果有人输入数字6或更大,它将转到:N但每当我输入6时,批处理文件就会退出。我试过if%input%>6goto:N但它只是告诉我我要去谷歌。@echooff:Start2clsgotoStart:StarttitleFrequentlyUsedWebsitesechoPleaseselectawebsitefromthelistechowiththecorrespondingkeyecho--------------------------------------echo[1]Googleec