Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?

指南:

每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包

澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。

(请参见:Windows批处理文件:.bat vs .cmd?)


当前回答

我使用它们作为常用目录的快捷方式。 一个名为“sandbox.bat”的示例文件,它位于我的PATH目录中

EXPLORER "C:\Documents and Settings\myusername\Desktop\sandbox"

调用脚本只需WIN+R—>沙盒

其他回答

对于具有数字计数器的循环(输出1到10):

for /l %i in (1,1,10) do echo %i

变量的延迟展开(为了更好地度量,还加入了子字符串):

    @echo off
    setlocal enableextensions enabledelayedexpansion
    set full=/u01/users/pax
:loop1
    if not "!full:~-1!" == "/" (
        set full2=!full:~-1!!full2!
        set full=!full:~,-1!
        goto :loop1
    )
    echo !full!
    endlocal

能够运行命令并处理输出(如bash中的'$()'的反引号)。

for /f %i in ('dir /on /b *.jpg') do echo --^> %i

如果文件名中有空格,可以这样写:

for /f "tokens=*" %i in ('dir /on /b *.jpg') do echo --^> %i

设置环境变量时的搜索和替换:

> @set fname=%date:/=%

...从日期中删除“/”以用于带时间戳的文件名。

还有子字符串……

> @set dayofweek=%fname:~0,3%

命令分隔符:

cls & dir
copy a b && echo Success
copy a b || echo Failure

在第二行,&&之后的命令仅在第一个命令成功时运行。

在第3行,||之后的命令仅在第一个命令失败时运行。