Windowsbatch file中FOR循环的语法是什么?
我想为我的网站创build一个编译的JavaScript文件。 对于开发,我宁愿将JavaScript保存在单独的文件中,只是将自动化脚本的一部分连接成一个文件并在其上运行压缩器。 我的问题是,如果我使用旧的DOS复制命令,它也会放入压缩机抱怨的EOF标记: 复制/ A * .js compiled.js / Y 其他人在做什么?
如何运行PowerShell脚本而不显示窗口或任何其他标志给用户? 换句话说,脚本应该在后台安静地运行,而不会对用户造成任何影响。 额外的功劳,不使用第三方组件的答案:)
我需要testing一个variables是否设置。 我已经尝试了几种技术,但是当%1被引号包围时,例如%1是"c:\some path with spaces"时,它们似乎失败了。 IF NOT %1 GOTO MyLabel // This is invalid syntax IF "%1" == "" GOTO MyLabel // Works unless %1 has double quotes which fatally kills bat execution IF %1 == GOTO MyLabel // Gives an unexpected GOTO error. 根据这个网站 ,这些是支持的IF语法types。 所以,我没有办法做到这一点。 IF [NOT] ERRORLEVEL number command IF [NOT] string1==string2 […]
我想在一个cmd文件中使用FORFILES,在给定的date之后通过“today”来处理所有文件。 我可以使用forfiles /d +07/10/2013 /c "cmd /c echo @fname"东西在7/10/13之后执行,但是我想要的只是从90天开始计算在“今天”之前。 是否有一个date计算的语法,将在一个cmd文件,将让我指定“今天之前x天”饲料到FORFILES? 我更喜欢不使用VBS(并且发现了可以在VBS中工作的代码片段),不过我可以重写Powershell的脚本,但理想情况下我想使用cmd。 为了澄清,“-90”会find所有超过90天的文件; “+90”会发现所有文件比今天晚90天以后(这基本上是无用的,因为文件很less会在未来的date编写),“+7/30/2013”将查找所有比7/30更新的文件/ 2013。 我想要最后一段时间,最好能够传递给CMD文件的天数variables,也就是说“在今天之前x天之后”,即“在最近x天”。 所以,而不是如上所示使用硬编码的date,我希望能够在cmd文件中计算该date。
我有一个主batch file,而不是调用4个其他batch file,所以我们可以并行运行。 例: Main.bat start call batch1.bat start call batch2.bat start call batch3.bat start call batch4.bat exit 在所有批1到批4停止执行之后,我想让Main.bat退出。 这样我就可以得到batch file的总运行时间。 问题是Main.bat甚至在batch1到batch4完成执行之前退出。 我试图为每个batch file计算%errorlevel%,但即使4个.bat文件仍在运行,它总是返回0。 希望有人能帮助我! 谢谢! 🙂
脚本 我有一个远程计算机,我想以编程方式运行安装程序(任意可执行文件)。 这些安装程序需要两件事情: 它们必须以pipe理员模式运行。 它们必须在特定的用户上下文(特别是属于Administrators组的成员的本地用户)下运行。 这已被certificate是非常具有挑战性的。 看起来似乎存在一些外部工具,但是我正在寻找Windows附带的解决scheme。 这个问题的有效解决scheme是什么样的 从提升的上下文(例如,升级的batch file或可执行程序)中,有效的解决scheme应该能够在另一用户上下文中以编程方式在pipe理员模式下启动进程。 假定其他用户的ID和密码可用,而另一个用户是Administrators组的成员。 其他限制: 有效的解决scheme不能依靠外部工具。 由于默认情况下Windows的更新版本与.NET和PowerShell一起提供,因此这些是有效的工具。 有效的解决scheme不需要用户交互。 这意味着如果UAC窗口popup,或者需要任何用户确认,解决scheme是无效的。 请在发布之前testing您的解决scheme,以确保其正常工作! 如果您要提供另一个解决scheme的链接,请在发布前确认链接的解决scheme是否正常工作。 许多声称对这个问题有解决scheme的人其实并没有这样做。 我曾经尝试过 我曾尝试使用批处理脚本,PowerShell和C#。 据我所知,这些技术都不能完成任务。 他们都遭受同样的根本性问题 – 作为另一个用户来运行一个任务,在pipe理员模式下是相互排斥的过程。 让我更具体一点: 为什么不批 用于在不同的用户环境下运行的命令是Runas,它不会启动升级过程。 有几个外部工具声称解决这个问题,但正如前面所述,这是不允许的。 为什么不是PowerShell 启动新进程Start-Process的命令可以提升一个新进程,并以不同的用户身份运行,但不能同时运行。 这里提到这个问题我有一个公开的问题。 不幸的是,没有人提供了一个解决scheme,这使我相信这是不可能的。 为什么不是C# 这似乎也是不可能的,因为Process类似乎不支持以pipe理员模式和不同的用户凭证启动进程。 为什么不是一个外部工具? 这迫使我依靠别人的代码来做正确的事情,而我宁愿自己编写代码。 事实上,我有一个比依靠别人更好的解决scheme ,但是相当危险 : 使用“任务计划程序”创build一个任务,以便在指定的帐户上以pipe理员模式启动可执行文件。 强制任务立即运行。 等待看看任务是否完成。 在这里回答 。 预先感谢任何人试图帮助! 这是非常感激,我希望如果没有别的,其他人能够find这个任务计划周围的工作。
我只需要使用Windows cmdfunction。 我需要从网站的两个variables/string在批处理脚本中使用它来validation操作。 为了不使它太简单,此网站需要另外authentication。 我发现这个地方: @set @x=0 /* :: ChkHTTP.cmd @echo off setlocal set "URL=http://www.google.com" cscript /nologo /e:jscript "%~f0" %URL% | find "200" > nul if %ErrorLevel% EQU 0 ( echo Web server ok % Put your code here % ) else ( echo Web server error reported ) goto :EOF JScript */ var x=new […]
正如在其他线程中所讨论的那样如何避免cmd.exe解释shell特殊字符(如<> ^) ,从命令行获取所有参数并不容易。 一个简单的 set var=%1 set "var=%~1" 是不够的,如果你有这样的要求 myBatch.bat abc"&"^&def 我有一个解决scheme,但它需要一个临时文件,也不是防弹的。 @echo off setlocal DisableDelayedExpansion set "prompt=X" ( @echo on for %%a in (4) do ( rem #%1# ) ) > XY.txt @echo off for /F "delims=" %%a in (xy.txt) DO ( set "param=%%a" ) setlocal EnableDelayedExpansion set param=!param:~7,-4! echo param='!param!' 它失败了像myBatch.bat%a ,它显示4不是%a 在这种情况下,一个简单的回声%1将工作。 […]
我的客户正在某些工作站用OpenOfficereplaceMS Office。 我的程序使用.xml扩展名(使用开放格式)将文件导出到Excel,并使用当前相关程序(使用ShellExecute)打开它。 问题在于OpenOffice没有注册与之关联的.xml扩展名。 手动关联工作正常,但我想做一个.reg或东西,轻松地改变设置。 我在registry中查找与已经做出的更改的PC,但是 "HKEY_CLASSES_ROOT\.xml" 键没有任何引用OpenOffice的东西。 该协会存储在哪里? 我怎样才能做脚本来完成这项工作?