Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
当前回答
符号链接:
mklink /d directorylink ..\realdirectory
mklink filelink realfile
该命令是Windows Server 2008及更新版本(包括Vista和Windows 7)上的本机命令。(它也包含在一些Windows资源包中。)
其他回答
子字符串变量:
> set str=0123456789
> echo %str:~0,5%
01234
> echo %str:~-5,5%
56789
> echo %str:~3,-3%
3456
cmd.exe本身的/c参数,告诉它运行然后执行这些命令。
我曾经发现自己经常这样做:
win+r, cmd RETURN, ping google.com RETURN
但现在我只知道
win+r, cmd /c ping google.com返回
快得多。如果您正在使用pstools,并且希望使用psexec在远程机器上执行一些命令行功能,那么这也很有帮助。
EDIT: /k工作方式相同,但保持提示打开。这可能经常会派上用场。
我使用它们作为常用目录的快捷方式。 一个名为“sandbox.bat”的示例文件,它位于我的PATH目录中
EXPLORER "C:\Documents and Settings\myusername\Desktop\sandbox"
调用脚本只需WIN+R—>沙盒
前面已经提到了%~dp0部分,但实际上还有更多内容: ~之后的字符定义了提取的信息。 返回补丁文件名时不包含字母 D -返回驱动器号 P -返回路径 S -返回短路径 X -返回文件扩展名 如果你在c:\Temp\long dir name\文件夹中执行test.bat脚本,
@echo off
echo %0
echo %~d0
echo %~p0
echo %~dp0
echo %~x0
echo %~s0
echo %~sp0
您将得到以下输出
测验 c: \Temp\长目录名\ c:\Temp\长目录名\ 。bat c: \ Temp \ \ test.bat LONGDI ~ 1 1 \ \ Temp \ LONGDI ~
如果一个参数被传递到你的脚本中 测试c: \ temp \ mysrc \ test.cpp 同样的操作也可以用于%1变量。
但是%0扩展的结果取决于位置! 在批处理的“顶层”,它扩展到当前批处理文件名。 在函数(调用)中,它展开为函数名。
@echo off
echo %0
call :test
goto :eof
:test
echo %0
echo %~0
echo %~n0
输出是(批处理文件以myBatch.bat开始)
myBatch.bat
:test
:test
myBatch
设置环境变量时的搜索和替换:
> @set fname=%date:/=%
...从日期中删除“/”以用于带时间戳的文件名。
还有子字符串……
> @set dayofweek=%fname:~0,3%