Articles of cmd

在cmd提示符和win32_process上延迟扩展ERRORLEVEL的差异

cmd /V:ON /c dir c:\<some non existing directory> & echo %ERRORLEVEL% Volume in drive C is PC COE Volume Serial Number is 9C37-D0B7 Directory of c:\ File Not Found 0 让我们使用相同的命令! 扩展ERRORLEVEL(启用延迟扩展) cmd /V:ON /c dir c:\ERt & echo !ERRORLEVEL! Volume in drive C is PC COE Volume Serial Number is 9C37-D0B7 Directory of c:\ […]

使用命令提示符查找每个CPU的CPU数量和内核数量

我正在尝试使用命令提示符检索每个CPU的CPU数量和内核数量。 我已经执行了下面的命令: wmic cpu get NumberOfCores, NumberOfLogicalProcessors/Format:List 我得到这个错误: wmic' is not recognized as an internal or external command, operable program or batch file 我在Windows Server 2008 R2机器上执行此操作。 我相信'wmic'命令在这个窗口上是兼容的。 我正在运行命令提示符的目录是“C:\ Windows” 有什么build议吗?

在dos中为dir命令设置recursion深度

我正在使用以下命令列出一些目录: dir /b /s /AD > c:\temp\dir_list.txt 这给了我几乎所需的清单。 但数据太多了,因为一些文件夹有很多子文件夹,我不想在我的列表中看到。 是否有可能将命令的recursion深度限制为-lets say-3? c:\dir_1\dir_2\dir_3\dir_foo 所以如果我在上面的例子中执行命令c:>我不想看到dir_foo目录,但只是dir_n的… 也许没有一个批处理/ VB脚本?

将Java静默安装到具有空格的目录中

我正在尝试使用静默模式安装Java,并指定一个包含空格的安装目录。 当我这样做时,popup“Windows安装程序”对话框,指出其中一个参数是不正确的。 如果我使用短path名称,它的工作是正确的,但我真的不希望使用短目录名称,因为这是存储在registry中的值。 我想要使​​用的命令… jre-6u39-windows-i586.exe /s INSTALLDIR="C:\Program Files (x86)\Java" 这会popupWindows Installer对话框。 当我使用… jre-6u39-windows-i586.exe /s INSTALLDIR=C:\Progra~2\Java 这工作。 注意:“Program Files(x86)”只是一个例子。 这是安装在客户端,他们select安装目录,因此我们必须能够支持他们可能指定的任何目录。 任何想法如何我可以做一个沉默的安装,但仍然使用长path名? 更新: 我想我会分享最后的解决scheme。 一个很酷的事情,我发现我想分享的是,你可以禁止安装的自动重启,它返回一个退出代码3010.因此,你可以推迟到另一次重启。 这里是代码(重写一下,以消除一堆我们自己的抽象) public bool InstallJava(string installPath, string logFile) { bool rebootRequired = false; string fullLogFileName = Path.Combine(logFile, "JavaInstall.log"); string arguments = string.Format("/s /v\"/qn REBOOT=Suppress INSTALLDIR=\\\"{0}\\\" STATIC=1 /L \\\"{1}\\\"\"", installPath, fullLogFileName); ProcessStartInfo startInfo = […]

在Windows批处理中查找打开的进程

我试图编写循环的代码,并告诉某个进程是否被打开。 它应该是一个循环,如果过程被打开,它会实时显示我。 换句话说,程序打开时文本会改变,closures时会再次改变。 相反,我得到的是一个文本相同的洪水,它不显示下面的“回声”。 我试过这个: @echo off goto xera :start tasklist /FI "IMAGENAME eq notepad.exe" | find /I "notepad.exe" > nul IF %ERRORLEVEL% equ 0 ECHO is opened IF %ERRORLEVEL% equ 1 ECHO isnt opened :xera set /p "=Status: " <nul &call :start //the code got 'stuck' here ECHO Text 2 (doesnt show) pause>nul

Windows 10控制台颜色不起作用(虚拟terminal控制字符序列)

控制台的文本颜色在Windows 10 build 15063.296 。 我挖了一下,发现自己迷路了。 这是我find的一切 从几个讨论中,似乎在最近版本的Windows 10( #1 , #2 )中删除了对“虚拟terminal序列”或“控制字符序列”的支持。 有些人还build议降级Git版本(这不适合我)。 我试图复制一个cmd.exe从我的另一台机器,版本是10.0.10586.0和着色工作,但是,经过进一步阅读和试验,我不知道问题出在哪里。 请参阅比较ls –color=auto的输出 git\git-cmd.exe , git\git-bash.exe ,windows的原始cmd.exe和较旧的cmd.exe 根据这个网站 ,对着色的支持并不在于命令窗口,而是在一个conhost.exe ,这conhost.exe了一个问题 – 为什么它在一些控制台中有效,而在某些情况下呢? 如果从cmd.exe启动powershell.exe,它将inheritanceconhost设置,因为它连接到以前创build的控制台,不会分配新的控制台; 这也使powershell.exe中的转义序列。 鉴于这句话,我尝试了以下这些只会加深我的困惑。 我在每个cmd版本中运行ls –color=auto命令,然后尝试从较新的版本运行较旧的cmd,反之亦然,得到以下结果。 ( 红色下划线是cmd v15063 ,绿色下划线是cmd v10586 ) 旧的,新的旧的 新的,旧的新的 /编辑我做了更多的实验… 有趣/混淆的是type和cat的不同结果,以及ls –color=auto与文件中内容type d相同的比较结果。 老控制台 新的控制台 控制台虚拟terminal序列msdn ANSI.SYS历史文档

Windowsbatch file在FOR循环中无法解释地重命名文件名

Windowsbatch file在FOR循环中无法解释地重命名文件名 我有一个小的Windows 7batch file来重命名MP3文件名的库。 在这个问题中,我只包含了最后几行代码。 它工作正常,除了一个代码段的问题,从一个variables附加到目录中的每个文件名string的文本(艺术家的名字)。 (解决之后,我的batch file将使用“set / p var =”提示input文本来填充variables。) 这个testing使用的两个示例文件名是: 01-serious song.mp3 02-happy song.mp3 这部分代码导致一个问题: @echo off setlocal enabledelayedexpansion ::Temporay test variable set str=Artist- for %%a in (*.mp3) do ( set oldName=%%a set newName=!str!!oldName! ren "!oldName!" "!newName!" ) endlocal 结果是02文件以string附加一次(按预期),而01文件名得到string附加两次(错误): Artist-Artist-01-serious song.mp3 Artist-02-happy song.mp3 我已经梳理了互联网,没有发现这种情况的一个讨论。 而且我不喜欢说我自己花了大约8个小时的时间。 经过多次testing和研究,我认为重命名声明是造成这种情况的原因。 所以我改变了这个batch file,用rename命令调用一个子程序,认为它干扰了for语句。 那仍然有问题。 然后我使用echo命令编辑了batch […]

将文本文件的内容读入环境variables

其实我想把txt文件的内容传给if条件 我正在尝试以下 set /p var = < file name if not %var% == “string” goto x else goto y 但它不工作。 当我检查var的值时,它显示的variables不被拒绝 Set %var% 环境variables%var%未定义

Findstr输出格式

我有很多日志文件,我想从中提取特定的文本,并用FINDSTR命令将其复制到一个新的文件, 例如:我有日志文件称为1.log,我需要提取在日志文件中的所有以N66666行开始的数字,如下所示: 22220473400664->473400664 01210260222->01210260222->N8888801210260222 01278448231->01278448231->N6666601278448231 01286799109->01286799109->N8888801286799109 我试过了: findstr /s /i "\<N66666.*" *.* > results.txt 但结果是复制从N6666开始的所有行到results.txt,我只需要将这些数字复制到results.txt。

系统(“cd <path>”)在C程序中

我试图在C程序中使用system()函数。 例如,我尝试使用system()函数在桌面上创build一个目录。 我的代码: #include <stdio.h> #include <stdlib.h> int main(void) { system("cd c:\\Users\\USER\\Desktop"); system("mkdir test"); return 0; } 当我运行这个代码时,会创build一个目录,但不在我的桌面上。 它是在我的项目目录中创build的。 为什么发生这种情况? 我可以在system()函数中使用cd命令吗? 如果没有,是否有一个替代cd命令,将与system()? 我正在使用Windows操作系统。 我试图从C程序中使用system(),因为我使用cmd程序。 我知道我可以使用WinAPI创build目录,没有任何问题。 我不想使用WinAPI,我的问题是如何使它使用system()。