草庐IT

带有goto命令的windows批处理文件不起作用

我对GOTO命令和附属标签有疑问。事实:给定文件夹中的一堆文件(它们是日志错误),我需要打开它们并检查它们是否包含特定字符串。如果是,则从文件名中删除一些字符(最后一次出现“_”之后的所有字符,包括它本身)并进行其他操作。为了切断字符,我以循环方式使用GOTO命令,正如我在此处找到的那样:http://www.robvanderwoude.com/battech_while_loops.php脚本是:@echooffsetlocalEnableDelayedExpansionclsfor%%Xin(D:\e-pub\outbox\logs\*.*)do(for/F"tokens=7"%

windows - 如何获取和打印环境变量的值?

我想打印Windows环境变量的值,比如路径或错误级别,我试过this但它不起作用。在我的控制台中输出:(不考虑它输出的空格/制表符):echo%PATH%PATH生成文件:PATH=$(PATH);\nonesuchall:echo%PATH%命令行:nmake/E我该如何解决?注意:VisualStudio的二进制路径在我的PATH变量中,这就是我在VS控制台外调用它的原因 最佳答案 百分号%在Makefile中有特殊含义。为了执行Windows批处理文件替换,您需要像这样转义它:echo%%PATH%%这似乎也有效:"echo

windows - echo命令在批处理编程中是如何工作的

我已经开始学习批处理编程,以便更深入地了解Windows机器。在Internet上,我看到一些带回声的命令,例如"@echooff"或"on"还有这个:"echo."但我不知道他们在做什么。如果有人能向我解释echo命令的功能,请回答我。 最佳答案 WindowsCMD中的ECHO命令用于将文本打印到屏幕,显示命令行的实际设置,这意味着当您执行以下操作时:@echooff命令输入前的"C:\Users[User]"行将消失。您可以通过以下方式恢复它:@echoonECHO的所有功能解释如下:@echo[on/off](设置命令行设置

Windows 批处理文件 - 管道到 FIND

尝试测试一个字符串以查看它是否包含Windows批处理文件中的子字符串。这是我目前所拥有的:echo%1|find"message"if%errorlevel%==0echocontainsstring命令行输出是(%1的内容是“messages\Message.js”):messages\Message.jscontainsstring我遇到的问题是,唯一能让它工作的方法是使用确切的行:echo%1|找到“js”。如何在不每次回显文件路径的情况下执行此操作?当我删除echo时,操作系统尝试打开该文件。我很想将文件路径保存到一个变量,但我尝试过的任何方法都不起作用,我总是以一个空变量结

windows - 批量获取当前日期月份和年份的安全方法

我正在尝试编写一个批处理脚本,以安全的方式(即独立于日期格式)获取当前的日期、月份和年份。不幸的是,我发现的所有互联网资源都提出了类似的建议:SETCURRENT_DATE=%DATE:=0%SETYEAR=%DATE:~-4%SETMONTH=%DATE:~3,2%SETDAY=%DATE:~5,2%如果我的日期是yyyy/mm/dd或yyyy-mm-dd格式,这将起作用,但如果它是yy-mm-dd或其他格式,则不会。有没有一种安全的方法来获取年月日?还有一个问题-是否可以知道日期分隔符是什么(第一种情况下为/,其他情况下为-)。 最佳答案

windows - 为什么我在尝试批量打印变量时得到 "Echo is on"

我尝试执行一个简单的批处理文件脚本:echo%1setvar=%1echo%var%当我在XP中运行它时,它给出了预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印(echo)值时收到“EchoisOn”。下面是程序的输出:G:\2012>abc.bat1G:\2012>echo11G:\2012>setvar=1G:\2012>echoECHOison.G:\2012> 最佳答案 去掉集合表达式中的空格。等号两边可以也不应该有空格(=)setvar=%1顺便说一句:我通常在所有批处理文件的开头都关闭@ech

windows - 批处理文件中出现意外的 "The system cannot find the drive specified."

我遇到了一个批处理文件问题(Windows7x64)。我设法将其缩减为以下内容(有两个空注释行;是否有实际注释似乎并不重要):@echooffif/i[%1]==[](echoA::::echoB)将其放入批处理文件中,然后不带参数运行它会产生以下输出:AThesystemcannotfindthedrivespecified.B删除其中一个::行,或删除周围的if,修复问题,以便获得预期的输出:AB这是怎么回事?为什么要寻找驱动器?编辑感谢您的回复。所以我的问题归结为:Whataretherulesfordeterminingwhether::means"startofcomment

windows - 如何从第N个位置获取批处理文件参数?

进一步HowtoPassCommandLineParametersinbatchfile如何通过准确指定其余参数来获取它们?我不想使用SHIFT,因为我不知道可能有多少个参数,如果可以的话,我想避免计算它们。例如,给定这个批处理文件:@echooffsetpar1=%1setpar2=%2setpar3=%3settherest=%???echothescriptis%0echoParameter1is%par1%echoParameter2is%par2%echoParameter3is%par3%echoandtherestare%therest%运行mybatchopt1opt2

windows - Windows 批处理中的 if/then/else 语句

在shell脚本中,我有以下代码:ifechoMr.32;thenechoSuccesselseechoFailedexitfiWindows批处理文件的等效语法是什么? 最佳答案 我很难想象ECHO何时会因返回的ERRORLEVEL不等于0而失败。我想如果输出已重定向到文件并且目标驱动器已满,它可能会失败。CptHammer使用ERRORLEVEL发布了一个很好的解决方案,尽管它不必要地使用了GOTO。它可以在没有GOTO的情况下使用:ECHOMr.32iferrorlevel1(echoFailedexit/b)else(ech

Windows echo 命令无法回显用户设置的变量

我做了什么搞砸了我的CMDshell?WindowsXPPro,打开cmd窗口并执行:C:\>settt=nameC:\>settttt=nameC:\>echo%tt%%tt%C:\>echo%time%14:13:28.67echo命令由于某种原因不起作用。我可以很好地回应内置变量。在另一台计算机上试过,效果如预期 最佳答案 set命令不占用空格。正确的语法是:settt=name您在示例中所做的是设置一个环境变量tt.考虑到这一点,您可以尝试这样做:echo%tt%并查看您的输出。