Articles of cmd

如何在命令行之间切换python 2.7到python 3?

我试图find最好的方式来切换两个python编译器2.7到3.3如果我从cmd运行python,我会使用类似 python ex1.py 在那里我从窗口环境variables从我的电脑属性设置“python”指向python 3.3或2.7的一个或另一个。 我想知道有一个简单的方法来从cmd行之间切换两个?

在C ++中查看system()调用的输出

我如何查看系统命令的输出。 例如: int _tmain(int argc, _TCHAR* argv[]) { system("set PATH=%PATH%;C:/Program Files (x86)/myFolder/bin"); system("cd C:/thisfolder/"); std::cin.get(); return 0; } 当我在Visual Studio中运行该程序时,会给我一个黑屏,我看不到正在运行的命令。 我需要它,所以我可以查看它是否有效。 谢谢!

32位cmd.exe如何在Windows Server 2003 x64上启动64位cmd.exe?

这是Windows Server 2008 64位上的7-Zip执行权限的后续操作 。 我试图避免有一个过于复杂的构build过程,以制作多个7-Zip EXE文件。 我只需要一个.cmd来读取一些64位registry项后启动我的Java进程。 但是,要成功使用一个EXE文件,它需要是32位。 上面的问题find了让Windows Server 2008检测到32位cmd.exe并将其交换到64位的技巧。 有没有办法在Windows Server 2003上做到这一点? 有一个Windows修补程序,它允许reg.exe以32位模式访问64位条目,但我无法确定这是在客户的服务器上,因此解决方法是不可行的。

我可以closures回声这个“for”循环从cmdinput?

我试图用这个优秀的答案 。 有没有办法让一个命令行执行以下(删除所有大小为零的文件),而不打印任何输出? for /r %F in (*) do if %~zF==0 del "%F" (它显示所有扩展的命令,也是当大小不为零时) 我已经尝试使用如何redirect标准错误在CMD.EXE空 (尝试>,1>和2>)没有用…

“delims =#+#” – 多于1个字符作为分隔符

是否可以定义一个不限于1个字符的分隔符? 基于标题的例子,我想定义我的分隔符如“#+#”。 文本文件/行可以包含两个字符,但很less有机会遇到特定的子string/文本组合。

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不会挂起?

如何recursion地展开一个环境variables?

假设如下: echo %MY_ENV_VAR%扩展为%USERPROFILE%\some\path echo %USERPROFILE%展开为C:\Users\MyUser 我的目标是在以下path创build一个空文件: C:\Users\MyUser\some\path\FOO.txt 。 我尝试了以下命令: type nul > %MY_ENV_VAR%\FOO.txt 不幸的是,输出是一个错误状态系统找不到指定的path。 我很确定这是因为shell不是recursion地扩展%MY_ENV_VAR% ,而是试图find一个以%USERPROFILE%开头的文字path。 我怎样才能最好地完成我的目标?

相当于Windows的“echo -n”不再适用于Win7

我在Windows cmd.exe (至less是XP)中有一个很好的技巧来模拟UNIX echo的行为,而不用换行符echo -n 。 例如,命令: <nul: set /p junk= xyzzy 会导致正好输出六个字符,前导空格和string“xyzzy”,而不是别的。 如果你对这个原因感兴趣,它实际上是一个input命令,在提示符输出到junk环境variables之前,输出" xyzzy"作为提示,然后等待用户input。 在这种特殊情况下,它不会等待用户input,因为它抓取了来自nul设备的input。 当(例如)在循环中处理文件(每个文件一次迭代),并且每行列出多个文件时,它在cmd脚本中非常有用。 通过使用这个技巧,您可以简单地输出每个文件名,然后input一个空格,然后在循环之后输出一个换行符: Processing files: file1.txt file42.txt p0rn.zip 现在我发现,在Windows 7下,空间不再输出,所以我得到的是: Processing files: file1.txtfile42.txtp0rn.zip 有没有一种方法可以让set /p再次开始expression我的空间,或者在Win7中有另外一种方法来达到同样的效果吗? 我试过引用,使用. (在echo ),甚至用^逃避string,但没有一个似乎工作: C:\Pax> <nul: set /p junk= xyzzy xyzzy C:\Pax> <nul: set /p junk=" xyzzy" xyzzy C:\Pax> <nul: set /p junk=' xyzzy' ' xyzzy' […]

检测CMD中的可移动驱动器号

我试图写一个脚本,它会检测到我的USB可移动驱动器名为“UUI”的信,然后创build它的文件夹。 我已经为CMD写了几个命令,它们在单独运行时工作。 但是,当我把它们放入一个bat文件时,我总会遇到一些错误。 以下是bat文件中的命令: for /F "tokens=1 delims= " %i in ('WMIC logicaldisk where "DriveType=2" list brief ^| c:\windows\system32\find.exe "UUI"') do (echo %i > drive.txt) set /p RemovableDriveLetter2= < drive.txt del /F /Q drive.txt set RemovableDriveLetter=%RemovableDriveLetter2:~0,1% %RemovableDriveLetter%: md MyNewFolder cd MyNewFolder 当我去cmd.exe并通过调用“myScript.bat”或“call myScript.bat”运行该文件时,出现错误: C:\用户\ UUI \桌面> myScript.bat \ windows \ system32 \ find.exe在这个时候是意外的。 C:\ Users […]