Articles of cmd

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

文件types.pl关联和使用cmd.exe运行脚本

我做了一个新的文件types.pl(资源pipe理器 – >工具 – >文件夹选项…->文件types)。 现在我想创build一个新的Action,它将调用cmd.exe并自动运行PERL脚本。我不知道在“用于执行操作的应用程序”下写什么,我必须通过cmd.exe某些参数,不知道哪个。 参数的forms,我想应该是:[cmd.exe] < 文件位置 > perl < 文件名 >

如何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 […]

如何在运行exe后closurescmd窗口。 从它的文件?

我有ac#app(app.exe),我想从命令行窗口运行,然后在应用程序启动后closures命令行窗口。 我尝试在进程列表中search“cmd”并closures它(cmdProcess.CloseMainWindow()),但是在这种情况下,如果通过双击运行app.exe,并且另外打开另一个cmd,被closures – 我不希望那样。 我怎么知道哪个cmd实例运行我的应用程序? 谢谢

使用32位安装程序删除64位registry项

我有安装程序(InstallanyWhere 2013)具有执行batch file的function。 我使用32位JRE创build了安装程序。 我有两个位置: HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ Lockconfiguration工具( 32位registry位置 ) HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall \ Lockconfiguration工具( 64位registry位置 ) batch file代码: cd\ cd c:\windows\system32 reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ProjectName" /f 当执行上述命令时,它指向32位registry而不是64位registry。 我知道“HKEY_LOCAL_MACHINE \ SOFTWARE”转换为HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node的原因,所以它指向32位registry。 我的问题如何通过命令提示符使用32位安装程序(内部使用batch […]