Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
当前回答
脚本所在的路径(带驱动器):~dp0
set BAT_HOME=%~dp0
echo %BAT_HOME%
cd %BAT_HOME%
其他回答
我总是发现很难阅读每行用关键字标记的注释:
REM blah blah blah
易于阅读:
:: blah blah blah
能够运行命令并处理输出(如bash中的'$()'的反引号)。
for /f %i in ('dir /on /b *.jpg') do echo --^> %i
如果文件名中有空格,可以这样写:
for /f "tokens=*" %i in ('dir /on /b *.jpg') do echo --^> %i
您可以将if语句链接起来,以获得类似短路布尔' and'的效果。
if foo if bar baz
快速将Unicode文本文件(16bit/char)转换为ASCII DOS文件(8bit/char)。
C:\> type unicodeencoded.txt > dosencoded.txt
作为奖励,如果可能的话,字符会被正确映射。
一个非常古老(大约1990年)的技巧来获得环境变量的总大小:
set > test
dir test
del test