批处理文件(*.bat)实用指南

1 概述

批处理文件(Batchfile)是 DOS 下的批处理文件,是一种无格式的文本文件,文件扩展名为 .bat.cmd。在命令行输入批处理文件名或双击批处理文件即可运行。批处理文件常用来简化日常重复性任务,但批处理文件应该仅仅被用于小功能或者简单的包装脚本,复杂功能应该使用Python脚本。[1]

2 批处理命令

[Home]+R 打开cmd窗口,输入help 显示部分DOS命令

序号命令描述示例
1find在文件中搜索字符串find /?
2findstr在文件中寻找字符串findstr /?
3move移动文件并重命名文件和目录move /?
4copy将一份或多份文件复制到另一个位置copy /?
5xcopy复制文件和目录树xcopy /?
6del删除一个或数个文件del /?
7mkdir创建目录mkdir /?
8rmdir删除一个目录rmdir /? or rd /?
9cls清除屏幕
10type显示文本文件的内容,与 Linux 系统 cat 命令功能类似
11rename重命名文件
12pushd改变当前目录到指定目录,并保存当前的目录在堆栈顶端
13popd改变当前目录,跳转到堆栈顶端保存的目录,并将堆栈顶端的目录删除
14where显示符合搜索模式的文件位置。在默认情况下,搜索是在当前目录和 PATH环境变量指定的路径中执行的。where /?

自定义变量:

set CURRDIR=%~dp0
SET REPO_ROOT=%cd%
SET BUILD_DIR=cmake_build
PATH %PATH%;..\externals\tcltk\bin
set PATH=%PATH%;..\externals\tcltk\bin
SET CMAKE_DIR=%REPO_ROOT%\tensorflow\contrib\cmake
SET MSBUILD_EXE="C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe"
SET PHP_BUILDCONF_PATH=%~dp0
SET PHP_SDK_SCRIPT_PATH=
set SDK_RUNNER=%PHP_BUILD_CACHE_SDK_DIR%\phpsdk-%PHP_BUILD_CRT%-%PLATFORM%.bat
set CMD_LINE_ARGS=%$
set DEFAULT_JVM_OPTS=
set TOOLS_PATH=packages\Grpc.Tools.1.14.1\tools\windows_x86
set GRPC_PYTHON_BUILD_WITH_CYTHON=1
set ARTIFACT_DIR=%cd%\%ARTIFACTS_OUT%
set GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS=2
SET SOURCE_DIR=F:\frameworks\tensorflow\
SET SOURCE_PYTHON_SCRIPT=%RETVAL%
SET SOURCE_VERSION_CC=%RETVAL%
DIR %REPO_ROOT%\%BUILD_DIR%\tf_python\dist\ /S /B > wheel_filename_file

set PYTHON_PROJECT_NAME=cntk
if /i %p_GpuBuild% equ true (
  set PYTHON_PROJECT_NAME=cntk-gpu
)

set PYTHON_WITH_DEPS=
if /i %p_CNTK_PYTHON_WITH_DEPS% equ true (
  set PYTHON_WITH_DEPS="--with-deps"
)

set SOURCEDIR=%~f1
set TARGETDIR=%~f2

注意事项:

  1. color 命令只能对整个控制台设置前景和背景颜色,无法对部分显示设置输出颜色;
  2. echo.输出空行;
  3. del .\*.rar Batchfile中路径分隔使用\;
  4. 转义字符 ^: 要输出特殊字符,就需要用 echo ^>、echo ^|、echo ||、echo ^^……之类的格式来处理;如果要显示%本身时,需要在前面用%来转义: %%, 例如: echo.Please usemake <target>where ^<target^> is one of

学习资料:
[1] Windows批处理命令详解
[2] Windows bat批处理基础命令学习教程
[3] 一份比较详细的DOS批处理命令说明
[4] bat脚本基本命令语法
[5] bat批处理命令大全
[6] Bat命令学习
[7] dos bat批处理命令帮助
[8] bat批处理脚本详细教程

[未完待续]

3 应用举例

示例-1: 清理系统垃圾.bat

@echo off
echo 正在清除系统垃圾文件,请稍等......
del /f /s /q  %systemdrive%\*.tmp
del /f /s /q  %systemdrive%\*._mp
del /f /s /q  %systemdrive%\*.log
del /f /s /q  %systemdrive%\*.gid
del /f /s /q  %systemdrive%\*.chk
del /f /s /q  %systemdrive%\*.old
del /f /s /q  %systemdrive%\recycled\*.*
del /f /s /q  %windir%\*.bak
del /f /s /q  %windir%\prefetch\*.*
rd /s /q  %windir%\temp & md  %windir%\temp
del /f /q  %userprofile%\cookies\*.*
del /f /q  %userprofile%\recent\*.*
del /f /s /q  "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q  "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q  "%userprofile%\recent\*.*"
echo 清除系统垃圾完成!
echo. & pause

示例-2: 设置网络静态IP

@echo 更改“无线网络连接”IP地址
@echo IP:192.168.6.112
@echo 网关:192.168.1.1
@echo DNS:10.10.198.31

@pause
@echo off
netsh interface ip set address name="无线网络连接" source=static addr=192.168.6.112 mask=255.255.255.0 gateway=192.168.6.1
netsh interface ip set dns name="无线网络连接" source=static addr=10.10.198.31
ping 192.168.6.112

示例-3: cmake构建VS2017工程

@echo off
set CURRENT_DIR=%~dp0
set PROJECT_NAME=project

echo %CURRENT_DIR%%PROJECT_NAME%
if not exist %CURRENT_DIR%%PROJECT_NAME% (
    mkdir %CURRENT_DIR%%PROJECT_NAME%
)
cd %CURRENT_DIR%%PROJECT_NAME%

@rem Generate VS2017 project.
cmake ../ -G "Visual Studio 15 2017 Win64"
pause

示例-4: 收集某一类文件到指定文件夹

@echo off

set ROOT_PATH=%~dp0
set SET_PATH=%ROOT_PATH%\nf_set


@rem Clear Workspace
if exist %SET_PATH% (
    rmdir /q /s %SET_PATH%
)
mkdir %SET_PATH%


@rem Collect NF set
for /F %%S in ('dir %ROOT_PATH%\*.set /s /b') do (
    move %%S %SET_PATH%
)
pause

示例-5: Batchfile版本声明注释

@rem Copyright 2017 gRPC authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem     http://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.

@rem Move python installation from _32bit to _32bits where they are expected by python artifact builder
@rem TODO(jtattermusch): get rid of this hack
@echo off
rem ******************************************************
rem * Clean up output files from previous runs
rem ******************************************************
@echo off
rem =========================================================
rem We copy xgsubmit.exe to work around a known output issue,
rem and work with the copy to submit the actual response file
rem =========================================================
@echo off
echo.
echo # ======================================================================
echo #                       test_decimal: platform=x64
echo # ======================================================================
echo.

echo # ==================== refleak tests =======================
@rem TODO(jtattermusch): is there a better way to force using MSVC?
@rem select the MSVC compiler explicitly to avoid using gcc from mingw or cygwin
@rem (both are on path)
set "MSVC_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe"

示例-6: PUSHD & POPD

@echo off
rem This batch file deletes all .txt files in a specified directory
pushd %1
del *.txt
popd
echo All text files deleted in the %1 directory

示例-7: Batchfile错误处理

mkdir -p %ARTIFACTS_OUT%
copy /Y cmake\build\%ARCHITECTURE%\grpc_csharp_ext.dll %ARTIFACTS_OUT% || goto :error
copy /Y cmake\build\%ARCHITECTURE%\grpc_csharp_ext.pdb %ARTIFACTS_OUT% || goto :error

goto :EOF

:error
echo Failed!
exit /b %errorlevel%

4 参考资料

[1] Google Shell 风格指南
[2] grpc/grpc
[3] tensorflow/tensorflow
[4] pytorch/pytorch

108个实用批处理文件 (仅供备用)WINXP原本的各项服务.BAT 1.TXT 2.txt 2000XP停止打印.bat 3.txt ARP本机绑定.bat Autorun 病毒清除工具.CMD C盘转换为NTFS格式.cmd dir.bat dos下重启.bat guest.bat IE不能打开新链接修复.cmd IE及系统限制修复器.CMD IIS最小权限分配.CMD sxs.exe 的查杀.bat sz.reg转换成reg.bat.bat win2000关机命令.bat WIN2003 IIS最小权限分配.bat WINDOWSINSTALLER故障修复.CMD winxp修改计算机名.bat WINXP原本的各项服务.BAT xp下确定最后的盘符.bat XP垃圾卸载器.CMD XP服务优化批处理.bat XP自动更新故障修复.CMD XP验证码显示补丁.CMD YLMF系统服务优化.bat 一键清理系统垃圾文件.bat 不显示扩展名.bat 不显示隐藏文件.bat 中文显示ping结果.bat 使用WMI别名获取CPU信息.bat 全盘删除所有文件夹下的_desktop.ini.bat 关闭IDE通道检测.bat 关闭局域网共享.cmd 关闭有害端口.bat 列举进程.bat 删除大小和类型一样的文件.bat 删除快捷方式的箭头.CMD 删除所有分区的默认共享.bat 判断光驱是否可用.bat 判断光驱里有无光盘.bat 判断分区格式.bat 刷新策略.bat 取得硬盘数.bat 右键添加bat.bat 右键添加打开MS-DOS.bat 启止用XP的图片视频预览功能.bat.bat 将cwindows.复制到当前目录并显示进度.bat 常见病毒清理.bat 开通局域网共享(访问本机无需验证即可进入).cmd 开通局域网共享(访问本机要填用户名和密码).cmd 开通局域网共享.cmd 弹出光驱.bat 快速设定分辨率.cmd 恢复快捷方式的箭头.CMD 截图.CMD 打开快捷方式指向的目录.bat 批处理读注册表的Run下面的值.bat 按扩展名分类.bat ......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值