Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
当前回答
cmd.exe中的快速编辑模式是我的最爱。这有点偏离主题,但是当与命令shell交互时,它可以是一个救星。不,我并不是在夸张——在你死之前,你只会看到一定次数的* * * * * v;你看得越多,死得越快。
打开regedit(小心,不是我的 故障、蓝屏等) 进入HKCU/控制台 “quickkedit”设置为“1”
(你也可以从UI设置,这可能是更好的方法。有关说明,请参阅注释。还有一个很好的一行脚本也可以做到这一点。)
现在,要复制,只需左键单击并拖动选择,然后右键单击复制。要粘贴,只需右击。
不再有^ v ^ v ^ v ^ v ^ v ^ v ^ v ^ v ^ v ^ v ^ v ^ v ^ v ^ v ^ v ^ v !!
该死,我想我刚杀了人。对不起!
其他回答
这个批处理文件既可以使用简单文件,也可以使用目录作为命令行参数(您可以以任何顺序混合它们)。循环在任何指定的文件上运行命令(本例中为'echo'),如果一个参数是一个目录,它将在其中的每个文件上递归地运行命令。
@echo off
for /f "delims=" %%f in ('dir %* /a-d /b /s') do echo %%f
没有编辑器,需要创建一个批处理文件?
copy con test.bat
只需输入命令,按enter键输入新行。 按Ctrl-Z和Enter关闭文件。
设置环境变量时的搜索和替换:
> @set fname=%date:/=%
...从日期中删除“/”以用于带时间戳的文件名。
还有子字符串……
> @set dayofweek=%fname:~0,3%
输出一个空行:
echo.
可以使用errorlevel检查批处理文件将要运行的系统(当前目录或路径)上是否存在给定的程序。为了让测试的程序正常运行,退出并设置退出码。在这个例子中,我用了-?作为myExe的参数,大多数CLI程序都有类似的参数,如-h,——help, -v等…这确保它只是运行并退出,并将错误级别设置为0
myExe -? >nul 2>&1
Set errCode=%errorlevel%
@if %errCode% EQU 0 (
echo myExe -? does not return an error (exists)
) ELSE (
echo myExe -? returns an error (does not exist)
)
是的,你可以直接测试errorlevel,而不是将其分配给errCode,但是这样你就可以在测试和条件之间使用命令,并根据需要反复测试条件。