学习地址

在学习批处理命令的过程中搜索到网上的一个《批处理命令一日一教学》系列,讲得非常浅显易懂,特此mark

http://www.bathome.net/thread-2576-1-1.html

创建批处理文件

新建记事本文档,将其后缀.txt改为.bat,再用记事本打开编辑是一个批处理文件了。
批处理中的等号两边不要加空格

常用命令

echo 显示此命令后的字符
echo. echo; echo\ echo/ 这四个指令均是换行作用,注意上面的. ; \ / 是紧贴着echo指令的
echo off  所有后续命令都不显示命令行本身
@ 与echo off类似,放在每个命令行的前面,不显示此命令行
call 调用另一个批处理文件(如果不使用call而是直接调用的话将不能返回到当前批处理文件中执行后续命令)
rem 注释可以使用::代替
dir /? 查看dir指令的帮助信息
help dir 查看dir指令的帮助信息与上相同ydf
type d:\testbat\test.txt 将d:\testbat下的信息打印在屏幕上
cd /d d:\testbat\ 更改当前目录至d:\testbat\下,(注意其中的/d选项,可以直接更改驱动器,例如当前在c:\下,可以用此命令直接转至d:\testbat\下)
tree .\ > list.txt将当前目录的目录树重定向输出至文件list.txt
tree .\ >> list.txt  将当前目录的目录树追加输出至文件list.txt,注意与上面指令">"的区别
if if指令可以作为判断分支,具体用法可以通过if /?或者help if 命令进行详细查看
cd . > test.txt 产生0字节文件test.txt

copy文件复制详解 如果要复制的路径带有空格、&等特殊符号的时候,要使用引号把这些特殊符号括起来

goto流程跳转详解
del删除操作
ren重命名文件文件夹
md创建文件夹
rd删除文件夹
move移动文件文件夹
find字符串查找
for命令非常好用
for /L %%A in (1,1,254) do ping 192.168.0.%%A | find "Reply" >> pingall.log
说明:"/L"参数代表迭代, ”%%A”是可替换参数, “(1,1,254)" "表示从1开始,步长为1,一直到254.  find "Reply" 表示一旦发现Reply就将结果写入Pingall.log中。
关键记住变量%%A 以及do后要做的与变量%%A相关的指令即可。
refer to http://home.cnblogs.com/group/topic/32261.html

有时候windows的批处理能带来很方便的操作,批处理也有变量声明,下面一段就是说的如何使用批处理中的变量。
set 功能一览

[设置变量]
格式:set 变量名=变量值
详细:被设定的变量以%变量名%引用

[取消变量]
格式:set 变量名=
详细:取消后的变量若被引用%变量名%将为空

[展示变量]
格式:set 变量名
详细:展示以变量名开头的所有变量的值

[列出所有可用的变量]
格式:set

[计算器]
格式:set  /a 表达式
示例:set /a 1+2*3  输出 7

[设置变量为表达式计算后的值]
set a=1+2
echo %a% ==>输出1+2
------------------------------------
set /a a=1+2
echo %a% ==>输出3

[设置变量为用户输入的值]
set /p a=输入一个值 ==>输出 输入一个值
echo %a% ==>显示用户输入的值

预定义的变量

下面是些已经被底层定义好可以直接使用的变量:不会出现在 SET 显示的变量列表中
%CD% - 扩展到当前目录字符串。
%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。
%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。
%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。
%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。
%CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。
%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。
%0 bat的完整路径名如"C:\Windows\system32\xxx.bat"
%1 bat参数1依次类推%2参数2...
%path% - 当前的环境变量。以分号隔开的路径列表,路径可包含空格,可以以'\'结尾, 可以以双引号包围之。

扩展变量

@ 与%i相关的变量(bat参数或者for循环的%i)
假设文件为C:\Documents and Settings\jinsun\桌面\ParseSinglePkgs.bat
%0        C:\Documents and Settings\jinsun\桌面\ParseSinglePkgs.bat
%~dp0  C:\Documents and Settings\jinsun\桌面\
%cd%   C:\Documents and Settings\jinsun\桌面
%~nx0   ParseSinglePkgs.bat
%~n0     ParseSinglePkgs
%~x0     .bat

@ 与%VAR%相关的变量
%VAR:str1=str2%   会将VAR中的str1替换为str2(str2如果为空则可以达到删除的效果,str1前可以加*,变量%ABC:*B=%是C)
%VAR:~0,-2%          会提取VAR 变量的所有字符,除了最后两个
%VAR:~2%              会提取VAR 变量的除前两个的所有字符
%VAR:~-2%             会提取VAR 变量的最后两个
%VAR:~2,5%           提取从第2个字符开始的5个字符

这篇文章看完了就懂了“%date:~0,4%%date:~5,2%%date:~8,2%.sql”是什么意思了。

sample:

要利用计划任务和mysqldump实现自动备份mysql,

于是写了下面这个bat文件,
@echo off
F:\wwwroot\APMServ5.2.6\MySQL5.1\bin\mysqldump.exe -u root -p 111111 hsjk120>F:\wwwroot\APMServ5.2.6\MySQL5.1\bin\%date:~0,4%%date:~5,2%%date:~8,2%.sql
但是执行的时候总是提示Enter password: 这样就失去自动备份的意义了。
后来发现-p 参数比较特殊,正确语法是 -ppassword,即-p和密码中间不能有空格,于是就修改成
@echo off
F:\wwwroot\APMServ5.2.6\MySQL5.1\bin\mysqldump.exe -u root -p111111 hsjk120>F:\wwwroot\APMServ5.2.6\MySQL5.1\bin\%date:~0,4%%date:~5,2%%date:~8,2%.sql
这样就直接备份不再提醒输入密码了。

下面这段是批处理,生成以当天日期为文件名的sql文件
%date:~0,4%%date:~5,2%%date:~8,2%.sql

实测后发现: %date:~6,4%%date:~0,2%%date:~3,2%.sql 能够输出正确的以当天为文件名的sql文件,这个可能与时间格式有关,

02/24/2014 Mon 这是调用命令echo %date%显示的结果。

set testPSNRPath=C:\Users\t_dingfeny\Desktop
cd %testPSNRPath%default

set testPSNRPath=C:\Users\t_dingfeny\Desktop\
cd %testPSNRPath%default
结果一致
set testPSNRPath=C:\Users\t_dingfeny\Desktop
cd %testPSNRPath%\default
错误,可见,不能简单的看做字符串的组合
setlocal enabledelayedexpansion的用法
@echo off
setlocal enabledelayedexpansion
set k=3
set k=4
echo !k!
pause

使用setlocal enabledelayedexpansion之后,变量被延迟赋值,相当于动态赋值,显示的是最新的赋值结果也就是4,而不加的话不会延迟赋值,也就是静态赋值,相当于只赋值最早的一个值。

windows下批处理文件的编写相关推荐

  1. 【开发工具】之windows下gnu makefile编写

    序  本文旨在示例怎么编写windows下的makefile, 依赖于"GnuWin32",可自行网上下载. 安装方法一: 下载网址:http://gnuwin32.sourcef ...

  2. windows下使用vscode编写运行以及调试C/C++

    不要转载,唯一出处:tangming博客园 最后更新于2019年8月12日: 本文原本为我在一年多前在参加算法竞赛期间于博客园发布的一篇整理vscode编写c/c++全部使用心得的文章,经过多次的修改 ...

  3. Windows下批处理文件(.bat)的使用

    批处理(Batch),就是进行批量的处理,英文译文BATCH,批处理文件后缀BAT就取的前三个字母,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中.批处理文件是扩展名为.bat或 ...

  4. windows下批处理文件bat怎么写?

    如何写bat文件,和sh文件有什么区别 项目需要,要求把Linux系统下包含有ROS功能的QT程序移植到Windows系统下,最初要做的是在Windows系统下安装ROS系统.如何在Windows系统 ...

  5. 如何编写linux批处理文件,Linux和Windows下的批处理文件编写

    一.Linux下批处理文件编写 1.先建一个文档,如名为test,修改其文件权限使其为可执行文件. sudo  chmod  +x  test 2.打开test文档,编辑. cd  绝对路径 for  ...

  6. windows下编写dll

    dll的优点 简单的说,dll有以下几个优点: 1) 节省内存.同一个软件模块,若是以源代码的形式重用,则会被编译到不同的可执行程序中,同时运行这些exe时这些模块的二进制码会被重复加载到内存中.如果 ...

  7. Windows下VScode编写ege图形库

    一.前言 具体安装步骤请参考下述链接,本文只是记录博主的安装过程Windows下用VScode编写ege图形库 二.安装步骤 1.下载并安装MinGw ege库 2.测试ege库 #include & ...

  8. 你想要的~最全的Windows下编写swift程序

    Windows下编写swift程序 一.安装VScode 1.官网下载最新版 VScode下载地址 2.将vscode修改为中文环境 1)使用快捷键[Ctrl+Shift+P](!或者F1)弹出查找命 ...

  9. 64位虚拟机下asm()语法_一步步学写Windows下的Shellcode

    如何在WIndows下编写一个shellcode?为什么会问这个问题,前段时间在做win下的Exploit,但是都是使用大佬写的shellcode,无法实现个人的一些需求.而网络上编写shellcod ...

最新文章

  1. 诺奖得主克鲁格曼:比特币是庞氏骗局,但不一定很快走向崩溃
  2. python猜数字游戏简单-python猜数字游戏快速求解解决方案
  3. 解决WebClient或HttpWebRequest首次连接缓慢问题
  4. 目标检测一卷到底之后,终于又有人给它挖了个新坑|CVPR2021 Oral
  5. ITK:使用最小最大曲率流平滑RGB图像
  6. #1419 : 后缀数组四·重复旋律4 (重复次数最多的连续字串)
  7. python123添加列表元素_Python之列表
  8. linux安装yum的脚本,lnmp一键安装脚本yum方式快速安装
  9. SQL学习笔记四之MySQL数据操作
  10. 直击硅谷最火全球区块链峰会,40位大咖讲了啥?
  11. 笨方法学Python
  12. 处理Cookie ( from http://edu.chinaz.com )
  13. 勒让德多项式的正交性和归一化
  14. [微信小程序] 原生小程序picker组件实现时间日期的选择
  15. 心理学与生活-南京大学-陈昌凯-中国大学MOOC慕课-各章测试题答案
  16. 各种梯度算法总结 + Total Variation
  17. linux每日命令(3):ln命令
  18. Unity中制作图片字体
  19. 10015---SpringMVC--自定义视图
  20. 如何使用奥特歌词制作双语LRC字幕

热门文章

  1. 封装原生javascript连缀
  2. 第5周编程题在线测试
  3. 中小软件企业管理存在的问题
  4. 春季养生食谱 灵芝孢子粉牛排汤补中益气
  5. 不会用苹果电脑(mac)的渣渣
  6. 绝技不是一天练成 新手入库停车技巧图解
  7. 深度学习实战-图像风格迁移
  8. 量化交易python 文件_python数据分析与量化交易
  9. 如何监测微信群关键词并收集转发到指定的群
  10. 互联网金融-资金账户系统设计