批处理·命令行中常用的操作

摘要:
偶尔会有做点自动化的需求,以往每次写批处理文件都是现查。今天把用到的批处理常用操作做个记录。往往在批处理文件开头处,设置是否回显,echoon或echooff区别是,是否将执行的语句本身显示在命令行。另外我们在输出log文件时也是用到了echo。

偶尔会有做点自动化的需求,
以往每次写批处理文件都是现查。
今天把用到的批处理常用操作做个记录。


1.批处理文件的调用与传参

a.bat
./b.bat Hello Wrold

REM 或
REM call b.bat Hello Wrold
b.bat
set param1=%1
set param2=%2
echo %param1%
echo %param2%

以上将分别打出HelloWorld


注意:
  以上 set 命令中,等号前后都没有空格


2.字符串拼接与截取

b.bat
set greeting=%param1%-%param2%
echo %greeting%

以上将输出: Hello-World


3.字符串截取

截取命令格式为

SomeText:~FromIndex:Count

截取示例:

set name=CoderMonkey
echo %name:~0,4%

以上将输出:Code

注:可以反向截取(FromIndex < 0)


4.字符串替换

替换命令格式为

SomeText:source=target

替换示例:

set name=CoderMonkey
echo %name:Monkey=Gorilla%

以上将输出:CoderGorilla


注意:
  字符串中有空格时,需要加引号
  没有空格的话,不必加引号


5.常用的变量

%cd%        current directory,当前目录
%date%     日期
%time%     时刻,包含毫秒

6.创建与删除文件夹

mkdir "foldername"

创建一个文件夹

rmdir "folder_path"

删除指定文件夹

rmdir /s /q "folder_path"

/s 表示删除指定目录及其下的子目录和文件
/q 表示静默处理,不询问


7.删除文件或重命名

del some_pathfilename.txt

带 option 参数的删除:(同删除文件夹)

del /s /q d:	emp	est.txt

重命名文件:
格式:rename 路径文件名.扩展名 新文件名.扩展名

rename d:	emp	est.txt log.txt

注:
  在命令行中,创建与删除文件或文件夹操作,
  不必切换盘符,而切换当前目录需要先切换盘符


8.输出文件,比如log日志

echo "【要输出的文字信息,比如当前日期时刻】%date% %time%" > log.txt

日期会显示为:2019/12/17 的格式,
时刻会输出为:13:58:28.24

如果想把日期时间用作 log 文件名,
由于/:都是不可用于文件名的字符,
这里我们就用到了上面提到的替换功能。

示例:

REM 将`/`跟`:`替换为空
set logfilename=%date:/=%_%time::=_%.txt
echo "%date% %time%Log信息" > "%logfilename%"

这里的 log 文件会在当前执行的路径下生成。
需要在指定路径下生成的话,在 log 文件名用完整路径即可


9.切换目录

进入指定路径,不切换盘符的时候

cd folderA
cd c:userfolderB

即,可以直接进入当前目录下的某个目录,
或,指定完整路径,进入指定的文件夹

其中,如果不在同一个盘符下,
需要,先切换盘符,如 d:

d:
cd work	asks

如上,也可以一次指定两层目录

返回上层目录:cd.. ,cd 后面加两个小点


10.查看当前目录下内容

dir

以上命令输出当前目录下文件夹和文件(仅本层目录)


11.启动其它程序或命令

示例,启动 chrome 浏览器,并打开指定网页

start chrome.exe www.baidu.com

12.注释的写法

12.1 注释的三种方式

REM 注释内容,不会被执行
@REM 同样是注释,不执行
:: 这也是注释内容,不会执行

一种是REM @REM 后面跟注释内容,
另一种是 :: ,两个冒号后面跟注释内容,

注意命令后面的空格

12.2 关于 echo

echo hi!

将会输出 hi!

即,echo 后面的内容会被显示出来。

往往在批处理文件(*.bat)开头处,
设置是否回显,

echo on

echo off

区别是,是否将执行的语句本身显示在命令行。
on 的时候显示,off 的时候不显示,仅打印执行结果。
另外我们在输出 log 文件时也是用到了 echo。

12.3 echo 与注释

echo on 的时候:(只有 REM 会回显)

  • REM 的注释回显
  • @REM 的注释不会回显
  • :: 的注释不会回显

echo off 的时候:(都不回显,没有区别)

  • REM 的注释不回显
  • @REM 的注释不回显
  • :: 的注释不回显

免责声明:文章转载自《批处理·命令行中常用的操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Charles系列一:Charles功能介绍、下载安装和界面简介[MySQL 5.6] 初识5.6的optimizer trace下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

windows下命令行模式中cd命令无效的原因

当我们执行cmd 想切换当前工作目录时,会发现windows下命令行模式中cd命令没有生效,到底是什么原因呢? 例如: 当我们想切换到D:MySqlmysql-5.7.19-winx64in 路径 ,理所当然的输入cdD:MySqlmysql-5.7.19-winx64in 回车后,界面上路径并没有改变 解决办法: 方法一: 输入完上面命令后,再输入D:...

CCNET+ProGet+Windows Batch搭建全自动的内部包打包和推送及管理平台

所要用的工具: 1、CCNET(用于检测SVN有改动提交时自动构建,并运行nuget的自动打包和推送批处理) 2、ProGet(目前见到最好用的nuget内部包管理平台) 3、Windows Batch(windows的批处理,用于nuget的自动打包和推送)(这里是最难解决的地方) 具体的搭建步骤: 一、先搭建CCNET的持续集成环境,可以参照以下这些文...

Linux ${} 变量内容的提取和替换功能等

[root@localhost log]# var=/dir1/dir2/file.txt 1、对变量取值 [root@localhost log]# echo ${var} /dir1/dir2/file.txt 2、求字符串的长度 [root@localhost log]# echo ${#var} 19 3、提取位置3到最后的字符 [root@loc...

采用.bat批处理命令快速设置Java环境变量

  背景:     java课程培训,每次到机房需要重新安装JDK,每次都采用图形界面进行操作比较麻烦(慢),于是在网上查了一下CMD命令设置系统环境变量的方法,再次记录下来。   设置方法:   1.找到JDK安装路径   在设置环境变量之前需要安装好JDK,安装好之后找到安装路径(图1),复制下安装路径。 图1   如图,我的JDK安装路径为 C:P...

Linux下db2V10.5命令行安装超详细图文教程(附下载地址)

下载地址:https://pan.baidu.com/s/1GtF03x1FMF3IsGdSiBJu-g 提取码:8vfj 失效了发邮件:wells974@163.com 一、db2prereqcheck预检查 首先进入到压缩包所在的目录,执行tar命令对.tar.gz压缩文件进行解压 # 解压到当前目录 tar -zxvf v10.5_linuxx64...

基于datax的数据同步平台

一、需求 由于公司各个部门对业务数据的需求,比如进行数据分析、报表展示等等,且公司没有相应的系统、数据仓库满足这些需求,最原始的办法就是把数据提取出来生成excel表发给各个部门,这个功能已经由脚本转成了平台,交给了DBA使用,而有些数据分析部门,则需要运维把生产库的数据同步到他们自己的库,并且需要对数据进行脱敏,比如客户的身份证号、手机号等等,且数据来...