Articles of cmd

Windowsbatch file时间比较

我正在尝试比较当前系统时间和设定时间。 请看下面: set currentTime=%TIME% set flag=false if %currentTime% geq 07:00 if %currentTime% leq 22:45 set flag=true if %flag%==true ( ) else ( ) 如果时间在上午7点到下午10:45之间,则执行此操作,否则执行另一个操作。 问题是这是行不通的。 结果不断变化。 我认为这与我的比较有关,即07:00

如何在不inheritancesubprocess中的句柄的情况下使用“start”命令?

这是一个说明我的问题的最小例子: :: test.bat @echo off call test2.bat 2>&1 | findstr foo echo done calling test2 :: test2.bat @echo off start /B notepad >NUL echo done starting child process 在这个示例中,findstr在记事本closures之前不会完成,大概是因为记事本已经从父级cmd进程inheritance了stdout。 如何修改test2.bat,使test.bat不会挂起?

嵌套forfiles:path和扩展名filter

是否有可能嵌套两个forfile命令,以便我可以通过path名和扩展 名进行过滤,然后只对这些双重过滤的文件运行命令? 举例来说,我想要获得所有用户的所有Outlook HTML签名。 我可以做到这一点 forfiles /s /pc:\Users /m *Signatures* /c "cmd /c forfiles /s /p @path /m *.htm" 但是这只会显示文件名,因为这是forfiles默认的调用cmd /c echo @file 。 改变这是行不通的,因为那么我需要在内部的forfiles命令中设置/c -option,它需要设置引号引起双引号: forfiles /s /pc:\Users /m *Signatures* /c "cmd /c forfiles /s /p @path /m *.htm /c "cmd /c echo @path"" 我怎样才能转义内部的引号或使用一些不同的方法来运行所有文件的path和文件扩展名的子string过滤的所有文件? 亲切的问候 sc911 忘记/srecursionsearch[/编辑]

Robocopy错误32文件我正在尝试更新/replace正在被另一个进程使用

我试图使用robocopy将本地文件复制到服务器上。 这是我的脚本: if exist \\10.1.1.1\c$ net use \\10.1.1.1\c$ /delete net use Z: \\10.1.1.1\c$ p@ssword /user:domain\username :: first copy files to a temp directory xcopy C:\dev\Filepath C:\dev\TempFiles\ /E /C /H /R /K /O /Y :: then copy files from temp directory to server robocopy "C:\dev\TempFiles" "Z:\Program Files (x86)\Insite Software\Commerce Integration Service V3.7.1.16264" MSD*.dll net use \\10.1.1.1\c$ […]

如何使用Delayed Variable Expansion来引用string中的variables

我正在尝试创build一个小脚本来执行轻量级模板replace任务,但是我正在用我想要的方式解除引用一个variables。 这是我的模板replacebatch file: @echo off echo ———— echo %~nx0% SETLOCAL ENABLEDELAYEDEXPANSION SET "src=%~1" SET "dst=%~2" ECHO %src% FOR /F "tokens=1,2* delims=%%" %%i IN (%src%) DO ( IF "%%k"=="" ( ECHO %%i >> %dst% ) ELSE ( SET "first=%%i" SET "middle=%%j" SET "last=%%k" SET "replace=!middle:~2,-1!" IF NOT "!first:~-1!"=="<" ( ECHO %%i >> %dst% ) ELSE IF […]

运行batch file时如何不打开Cmd窗口

我写的每个batch file打开一个Cmd窗口,并保持打开,直到程序完成。 在.bat文件中包含的命令string是什么,不打开CMD窗口或打开并立即隐藏它? 我必须留在MSW7 Pro内置编程的范围内。 现在,我只是玩味精命令得出这个想法。 为了成功,只有消息窗口本身应该出现在屏幕上。

通过CMD调用几个batch file不会阻塞

我试图用Python通过CMD一个接一个地调用几个install.bat文件。 每个bat文件都必须在交互式控制台窗口中显示,因为它要求某些用户的指令,而且python程序只有在每个cmd进程parsing后才会恢复。每个install.bat文件花费相当长的时间才能完成其进程。 我的代码如下: for game in games : print("———– Starting conversion for %s ———–" %game) subprocess.call("start cmd /C " + "Install.bat", cwd=os.path.join(gamesDosDir,game), shell=True) print("end") 但是shell里面的控制台窗口是一次启动的,在它们中的任何一个完成之前,出现“end”消息,而我希望它们一个接一个地出现,而不是到n + 1,直到n是1完成,控制台窗口closures(用户或自动/ K或/ C然后)。 我明白这是使用CMD的一些问题,因为呼叫应该被阻止。 如何解决? 另外,如果可能的话,如何保持它完全一样,并添加“Y”和“Y”作为默认的用户input?

JScript / Windows Script Host中的UNIX`exec`相当于

我有一个.js文件,这个文件是由命令行上的Node.js执行的。 我已经用npm设置了一切,把文件作为“bin”放到用户的path中。 我的问题是,因为文件以.js结尾,所以从命令行运行该文件会将其发送到基于JScript的Windows脚本宿主,而不是节点。 我试图编写一个JScript包装器,坐在myprogram.js ,由Windows Script Host执行,然后发送到Node.js. 不幸的是,WScript的Exec命令似乎不像UNIX的exec命令: var shell = new ActiveXObject("WScript.Shell"); var proc = shell.exec("node .\\Library\\executable.js"); while (proc.Status === 0) { WScript.Sleep(100); } WScript.Echo(proc.Status); 这缓冲了程序的输出,并通过某种JScript WshScriptExec对象公开它。 我需要一个脚本或一个function,或者其他方式,把整个terminal交给我启动的命令行脚本。 最有用的是,我想用正在执行的命令的进程(即UNIX- exec -y行为)replace正在执行的JScript进程。是否有任何方法可以执行此操作或以其他方式解决我的问题?

path前缀\ ?? \和\\?\

以\??\为前缀的path和以\\?\为前缀的path有什么不同\\?\ 在Windows 7 CMD线 DIR给出: \??\Volume{00000000-0000-0000-0000-000000000000}\ WMIC VOLUME LIST给出\\?\Volume{00000000-0000-0000-0000-000000000000}\ 谢谢 附加信息: 我在我的系统驱动器上创build了一个目录,放置了所有的安装点。 所以我首先做了一个MD C:\HDDs ,然后是MD C:\HDD\Drive1 , MD C:\HDD\Drive2 …。 将驱动器安装到这些空目录后,可以通过切换到具有CD /DC:\HDDs的DIR并发出DIR命令来查看GUID。 也许我必须发出DIR /ah来显示隐藏的东西,以防万一挂载点是隐藏的目录…

批量程序来检查过程是否存在

我想要一个批处理程序,它将检查进程notepad.exe存在。 如果 notepad.exe存在,它会结束进程, 否则批处理程序将自行closures。 这是我所做的: @echo off tasklist /fi "imagename eq notepad.exe" > nul if errorlevel 1 taskkill /f /im "notepad.exe" exit 但它不起作用。 我的代码有什么问题?