Articles of cmd

JScript:如何运行外部命令并获取输出?

我使用cscript.exe运行我的JScript文件。 在脚本中,我需要调用外部控制台命令并获取输出。 尝试: var oShell = WScript.CreateObject("WScript.Shell"); var oExec = oShell.Exec('cmd /c dir'); WScript.Echo("Status "+oExec.Status); WScript.Echo("ProcessID "+oExec.ProcessID); WScript.Echo("ExitCode "+oExec.ExitCode); 和 var oShell = WScript.CreateObject("WScript.Shell"); var ret = oShell.Run('cmd /c dir', 1 /* SW_SHOWNORMAL */, true /* bWaitOnReturn */); WScript.Echo("ret " + ret); 但没有运气:命令运行(最有可能)没有错误,但我没有输出。 请注意'cmd / c dir'在这里只是一个例子,以确保我得到任何输出。 那么,我该怎么做呢? 更新:我试图将这个https://stackoverflow.com/a/6073170/1013183转换为JScript,但也没有运气: var oShell = WScript.CreateObject("WScript.Shell"); var oExec […]

批处理脚本调用可执行文件,如果挂起则退出

因此,我需要编写一个批处理脚本来启动一个可执行文件,并在可执行文件完成后立即退出脚本(所以不需要ip ping等待脚本),但是如果可执行文件仍在运行,会在30分钟后自动终止该脚本并退出脚本挂起,没有回应等) 这是我迄今为止。 find语句正确地输出匹配的进程数,但是我的问题是ERRORLEVEL总是返回0,无论是否有正在运行的匹配的可执行文件。 我对批处理脚本相当陌生,所以很可能我忽略了一些非常简单的事情。 @echo off start calc.exe REM loop 600 times, each loop being 3 seconds (30 minutes total) FOR /L %%A IN (1,1,600) DO ( REM find the running executable tasklist | find /I /C "calc.exe" > nul echo %ERRORLEVEL% Rem exit the script if no executable is found (ie it has […]

pushd \\ network \path返回CMD不支持作为当前目录的UNCpath

我正在使用batch file来访问networking中的一些文件。 我在用 pushd \\Network\path 导航到联网目录以启动一些脚本 我的蝙蝠文件工作得很好,直到今天上午,我看到“CMD返回CMD不支持作为当前目录的UNCpath”。 我看到这个错误消息时使用CD而不是pushd导航到networking目录,但我可以找出为什么我得到一个以前工作的bat文件的错误。 而且我确实确定networking位置是在线的并且可以用其他方式访问。

FOR循环将每个迭代在同一行中用相同的前缀分组

我以一个练习题为例,将其作为一个练习来讨论: 合并pdf文件和相关的文件名 在这个问题上,我试图回答部分成功,因为它已经用更多的信息更新了这个问题。 总结这个问题是一个包含以下内容的文件夹: 123456_ABCD.pdf 123456_EFGH.pdf 123456_IJKL.pdf 111111_ABCD.pdf 111111_EFGH.pdf 222222_IJKL.pdf 222222_WXYZ.pdf 而在一个命令我想得到这样的输出: 123456_ABCD.pdf, 123456_EFGH.pdf, 123456_IJKL.pdf 111111_ABCD.pdf, 111111_EFGH.pdf 222222_IJKL.pdf, 222222_WXYZ.pdf 这里的每一行都假设代表在命令中find的相同前缀 这是我的尝试: @echo off ( copy nul 123456_ABCD.pdf copy nul 123456_EFGH.pdf copy nul 123456_IJKL.pdf copy nul 111111_ABCD.pdf copy nul 111111_EFGH.pdf copy nul 222222_IJKL.pdf copy nul 222222_WXYZ.pdf ) setlocal enabledelayedexpansion :: set _pdffiles= set _prevfiles= for /f […]

收集文件扩展名列表 – “命令行太长”解决方法

我正在使用这个batch file扫描Windows文件系统,并保存该系统中所有文件扩展名的.txt文件: 命令行命令: NameOfBatchFile.bat >List.txt 批文件代码: @echo off set target=%1 if "%target%"=="" set target=%cd% setlocal EnableDelayedExpansion set LF=^ rem Previous two lines deliberately left blank for LF to work. for /f "tokens=*" %%i in ('dir /b /s /a:-d "\\PathOfMyWindowsDirectory"') do ( set ext=%%~xi if "!ext!"=="" set ext=FileWithNoExtension echo !extlist! | find "!ext!" > nul if […]

search给定的文件集并复制到另一个目录

在needToFind.txt文件中有一组给定的文件名,例如: myImage1.jpg,theImage.jpg,parisImage.jpg(这是我将格式化它无关紧要的文件名用逗号或换行符分隔) 还有一个名为/ MyImageFolder的文件夹,其中包含1000个图像,还包含myImage1.jpg,theImage.jpg,parisImage.jpg 我想find那些给出的图像,并将其复制到另一个目录。 我想search给定的文件名在needToFind.txt,目录/文件夹MyImages,其中包含许多图像。 并将创build的图像复制到另一个目录/文件夹,例如MyGivenSetOfImages。 请帮助,这将拯救我的生命。 谢谢

为什么findstr不能正确处理案件(在某些情况下)?

在cmd.exe中编写一些最新的脚本时,我需要使用findstr和正则expression式 – 客户需要标准的cmd.exe命令(不包括GnuWin32,Cygwin,VBS和Powershell)。 我只是想知道一个variables是否包含任何大写字母,并试图使用: > set myvar=abc > echo %myvar%|findstr /r "[AZ]" abc > echo %errorlevel% 0 当%myvar%设置为abc时,实际输出string并将errorlevel设置为0,表示find了匹配项。 但是,全名列表: > echo %myvar%|findstr /r "[ABCDEFGHIJKLMNOPQRSTUVWXYZ]" > echo %errorlevel% 1 不输出该行,并正确地将errorlevel设置为1。 此外: > echo %myvar%|findstr /r "^[AZ]*$" > echo %errorlevel% 1 也按预期工作。 我明显在这里丢失了一些东西 ,即使这只是findstr被破坏的事实。 为什么第一个(范围)正则expression式在这种情况下不起作用? 更奇怪的是: > echo %myvar%|findstr /r "[AZ]" abc > echo %myvar%|findstr /r "[AZ][AZ]" […]

使用Windows cmdrecursion删除0KB文件

我有一些进程,在目录及其子目录中创build一些0KB大小的文件。 如何使用Windows命令提示符从文件系统中删除文件? 任何单一的命令或脚本将执行任务将工作。 我只能运行简单的cmd命令和脚本,在具有受限访问权限的远程计算机上工作。

批处理目录中的所有文件

现在我有一个批处理作业,我写了调用另一个文件,并传递可执行文件需要运行的variables(密码和文件名)。 例如: > cd f:\test\utils > admin import-xml -Dimport.file=f:\DB\file1.xml -Dadmin.db.password=test123 我写了一个这样做的工作,但发现会有多个文件。 用户名和密码永远不会改变,但文件名不同,像15个不同的XML文件 – 也许更快即将到来。 这些文件将始终位于相同的文件夹中。 我可以写一些将处理位于这个目录中的每个文件的东西,而不是像15-20个作业(每个文件一个)。 等待下一个完成之前,或者我可以添加一个3分钟的睡眠,然后开始下一个文件。

的ActivePerl。 .pl文件不再执行,而是在记事本中打开

截至今天上午,我已经在Windows 7中运行perl脚本。 我犯了使用记事本作为打开/ editng我的.pl文件的默认值的错误。 现在,当我尝试从DOS提示符运行未经编辑的.pl文件时,脚本不会执行,而是在Windows资源pipe理器中打开关联的源代码文件。 不pipe复杂程度如何(包括经典的“hello world”),这对我所有的.pl文件都是一样的。 我一直在研究需要registry的变化 – 这一切都很好。 尝试assoc和ftype的变化 – 什么都没有。 尝试重新安装ActivePerl – 没有解决scheme。