Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
Windows批处理文件有哪些不太为人所知,但很重要和有用的特性?
指南:
每个答案一个特征 给出特性的简短描述和示例,而不仅仅是文档链接 将答案限制在本地功能,即不需要额外的软件,如Windows资源包
澄清:这里我们指的是由cmd.exe处理的脚本,这是WinNT变体的默认值。
(请参见:Windows批处理文件:.bat vs .cmd?)
当前回答
删除周围的报价。
for /f "useback tokens=*" %%a in ('%str%') do set str=%%~a
我最近必须写一个批处理文件,由VS预构建事件调用,我想在项目目录中作为参数传递。在批处理文件中,我需要将路径与嵌套子文件夹名称连接起来,但首先需要删除周围的引号。
其他回答
使用pushd到UNC路径将创建一个临时驱动器映射(从Z开始,向后查找下一个可用的字母),并将您放入该驱动器和路径中。弹出或退出命令提示符时,临时映射将消失。
C:\>pushd \\yourmom\jukebox
Z:\>pushd \\yourmom\business
Y:\>
此外,与其说这是一个批处理技巧,不如说这是一个命令行环境技巧,但是当您在命令行上使用pushd和popd和网络共享时,使用$+(显示pushd堆栈深度)和$M(显示网络共享路径)修改提示符是有用的。
C:\utils>prompt $+$m$p$g
C:\utils>pushd m:
+\\yourmom\pub M:\>pushd c:\
++c:\>pushd
M:\
C:\utils
++c:\>popd
+\\yourmom\pub M:\>popd
C:\utils>
使用空格和转义字符完全控制输出:
echo. ^<resourceDir^>/%basedir%/resources^</resourceDir^>
文件名为“YYYY-MM-DD HH:MM:SS.txt”的例子
回波测试>“%日期:~ 0,4% - %日期:~ 5 2% - %日期:~ 8,2% %时间:~ 0,2% _ %时间:~ 3,2% _ %时间:~ 6,2% . txt”
我使用颜色来指示我的脚本是否成功,失败,或者通过改变文本和背景的颜色来需要一些输入。当你有一些机器在你视野范围内,但距离很远时,它真的很有帮助
颜色XY
其中X和Y为从0到F的十六进制值,其中X -背景,Y -文本,当X = Y时颜色不会改变。
颜色Z
更改文本颜色为“Z”并设置黑色背景,“颜色0”将不起作用
颜色的名字叫
颜色吗?
而不是用REM或::行乱写脚本,我在每个脚本的顶部执行以下操作:
@echo OFF
goto :START
Description of the script.
Usage:
myscript -parm1|parm2 > result.txt
:START
注意如何使用管道和重定向字符而不转义它们。
去:eof纸板
我在脚本的末尾添加了“goto:eof”,作为存放代码片段的方便空间。这样我就可以快速复制/粘贴到这个区域,而不需要注释/取消注释。
goto :eof
:: code scraps
call this.bat
call that.bat
set TS=%DATE:~10%%DATE:~4,2%%DATE:~7,2%-%TIME:~0,2%%TIME:~3,2%%TIME:~6%%
for /R C:\temp\ %%G in (*.bak) DO del %%G