当前位置: 首页 >  信息化服务 >  windows CMD命令的一些使用方法及注意事项

windows CMD命令的一些使用方法及注意事项

导读:windows CMD命令的一些使用方法及注意事项.转载请著名出处:https://www.cnblogs.com/funnyzpc/p/17572397.html.一.执行路径或参数带中文、空格、特殊字符、数字问题.首先说不论是执行路径还是脚本参数均不能包含或使用这四类字符[中

windows CMD命令的一些使用方法及注意事项

转载请著名出处:https://www.cnblogs.com/funnyzpc/p/17572397.html

一.执行路径或参数带中文、空格、特殊字符、数字问题

首先说不论是执行路径还是脚本参数均不能包含或使用这四类字符[中文空格特殊字符数字]

执行路径还是变量是一定不可以以数字开头的,变量也不建议使用纯数字 ,例如:
在cmd窗口定义并执行:

E:\self\mee_full\blogs\bin\tmp>set 234=hello
E:\self\mee_full\blogs\bin\tmp>call echo %234%
hello

看起来是没什么问题,但是我们将命令写在cmd文件内看一下:

  • 定义exec.cmd文件内容

    set 234=hello call echo %234%

  • 执行exec.cmd

    E:\self\mee_full\blogs\bin\tmp>exec.cmd E:\self\mee_full\blogs\bin\tmp>set 234=hello E:\self\mee_full\blogs\bin\tmp>call echo 34 34

可看到输出的是34,这明显是错误的,这种情况一定要具体实践才会明白,一定要留意~

如果路径中出现空格或者中文一定建议您用双引号(英文输入法下的)包起来 : /目录1/目录2/命令

  • 如下例:

    E:\self\mee_full\blogs\bin\哈了\tmp>E:\self\mee_full\blogs\bin\tmp\zip -r ../qq.zip ./files ‘E:\self\mee_full\blogs\bin\哈了’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

    E:\self\mee_full\blogs\bin\tmp>

使用双引号包起来就没问题了:

E:\self\mee_full\blogs\bin\哈了\tmp>
E:\self\mee_full\blogs\bin\哈了\tmp>"E:\self\mee_full\blogs\bin\tmp\zip" -r ../qq.zip ./files
updating: files/DateUtil.java (172 bytes security) (deflated 70%)
updating: files/DelayTask.java (172 bytes security) (deflated 48%)
updating: files/excel/ (260 bytes security) (stored 0%)
updating: files/excel/CellBaseType.java (172 bytes security) (deflated 64%)
updating: files/excel/CellFmt.java (172 bytes security) (deflated 67%)
updating: files/excel/ExcelDataReflectUtil.java (172 bytes security) (deflated 73%)
updating: files/excel/ExcelReadUtil.java (172 bytes security) (deflated 85%)
updating: files/excel/ExcelWriteUtil.java (172 bytes security) (deflated 81%)
updating: files/excel/PoiCellProcess.java (172 bytes security) (deflated 84%)
updating: files/excel/PoiCellStyleProcess.java (172 bytes security) (deflated 74%)

二.脚本文件命令连续执行换行问题

连续执行问题之前也一直困扰着我,后来不断实践倒有了些心得~

if exist 这类开头的判断命令则不存在多条命令连续执行换行停止问题.

对于像echodirzipmvnjava等等这类命令,建议命令前加一个call即可~

example:

E:\self\mee_full\blogs\bin\tmp>
E:\self\mee_full\blogs\bin\tmp>call echo hello
hello

E:\self\mee_full\blogs\bin\tmp>call dir
驱动器 E 中的卷是 DATA
卷的序列号是 DA15-004D

E:\self\mee_full\blogs\bin\tmp 的目录

2023/07/20  14:47    <DIR>          .
2023/07/20  14:47    <DIR>          ..
2018/12/01  23:15            69,120 bzip2.dll
2023/07/20  14:48                34 exec.cmd
2023/07/20  11:07    <DIR>          files
2018/12/01  23:15           237,056 zip.exe
              3 个文件        306,210 字节
              3 个目录 925,669,171,200 可用字节

尤其是命令放在cmdbat文件内时一定要使用call

三.变量定义及引用问题

变量被引用的前提是一定要被定义,不论是来自于命令行还是来自于set命令定义的,都需要有!

首先说如何定义吧~

1.在执行脚本文件命令行定义

比如这样

E:\self\mee_full\blogs\bin\tmp>exec.cmd aa bb cc
E:\self\mee_full\blogs\bin\tmp>exec.bat aa bb cc

exec脚本文件内接收这三个参数(aa,bb,cc)需使用参数索引获得:

set VALUE1=%1% // aa
set VALUE2=%2% // bb
set VALUE3=%3% // cc

上面是定义了接收变量的,实际也可以不使用接收变量~

2.在cmd执行命令行(裸命令)或脚本文件内

声明: set aa=hello

使用: echo %aa% or call echo %aa%

example:

E:\self\mee_full\blogs\bin\tmp>set aa=hello
E:\self\mee_full\blogs\bin\tmp>echo %aa%
hello

注意:定义的变量名强烈建议使用大写,使用时更易分辨!

四.批量压缩文件问题

windows并未内置zip相关命令工具,不论是cmd还是powershell都没有,所以这就需要我们自行安装zip相关工具。
windows下可以实现zip相关功能的工具大概有这俩,这是我用到过的:

1.使用7z

这个工具十分好用,既可以GUI操作,也可以使用命令行操作,使用命令行则为:

%---- 若 7z.exe 安装在这个地方 ---%
C:\Program Files\7-Zip\7z.exe

%---- 则具体执行命令 ---%
"C:\Program Files\7-Zip\7z"  a 压缩后的文件.zip 文件夹或文件

7z请自行搜素下载,这里不提供哈~

2.使用bzip2

这是个命令行用的bzip2工具。
具体使用如下:

%----若 7z.exe 安装在这个地方 ---%
D:\zips\zip.exe

 %---- 执行的命令 ---%
 D:\zips\zip -r 压缩后的文件.zip 文件夹或文件

bzip2工具在autoDeploy内有提供,也可以去bzip官网下载

五.命令换行问题

这个问题其实很简单,命令行尾用 ^ 就好

example:

call  命令第一部分 ^
  命令第二部分

六.忽略执行及多条命令执行问题

多条命令一般用这三类操作符分割 & && ||

  • & 操作符

命令1 & 命令2

先执行命令1再执行命令2命令1不论执行成功与否都会执行命令2,这样就起到了忽略错误命令行

  • && 操作符

命令1 && 命令2

先执行命令1再执行命令2命令1执行成功才会执行命令2,命令有前后依赖会用到此操作符

example:

xcopy hello.txt D:\  /s /e /y && (echo ok ) || (echo error)

因为有的命令会返回操作状态(成功/失败),&&也可接收这一状态并判断

  • | 操作符

命令1 | 命令2

管道操作符,命令1命令2的操作对象,例如:

E:\self\mee_full\blogs\tmp\files>echo hello youth | findstr "y"
hello youth
  • || 操作符

命令1 || 命令2

就是命令1出错、运行不成功才执行命令2

*单条批量执行脚本样例

@echo off

%chcp 65001%

%-----必要参数(需要填的!)-----%
%项目目录%
set PROJECT_DIR=D:\workspace\mee-web
%工具7z安装目录%
set ZIP_EXEC_PATH="C:\Program Files\7-Zip\7z"
%压缩文件包名称%
set FILE_NAME=mee-web.zip

%服务器IP%
set SSH_IP=192.168.76.60
%服务器端口%
set SSH_PORT=22
%服务器登录用户%
set SSH_USER=root
%服务器登录密码%
set SSH_PASSWORD=root@1233
%服务器工作目录%
set SSH_DIR=/home/nginx/tmp
%其他变量(不用动),输出当前路径% 
set BAT_PATH=%cd%

%-----打包&构建-----%
call cd %PROJECT_DIR% ^
    & rd/s/q dist ^
    & del /a/f/q %FILE_NAME% ^
    & npm run build:uat --scripts-prepend-node-path=auto ^
    && %ZIP_EXEC_PATH%  a %FILE_NAME% ./dist/** ^
    && echo upload file to server... ^
    && cd %BAT_PATH% ^
    && %BAT_PATH%\bin\pscp  -P %SSH_PORT% -pw %SSH_PASSWORD% %PROJECT_DIR%\%FILE_NAME% %SSH_USER%@%SSH_IP%:%SSH_DIR% ^
    && echo invoke server command... ^
    && %BAT_PATH%\bin\plink -pw %SSH_PASSWORD% -P %SSH_PORT%  %SSH_USER%@%SSH_IP% "cd %SSH_DIR% && unzip -o %FILE_NAME% && rm -rf %FILE_NAME%" ^
    && echo success! ^
    && pause

*单行执行脚本样例

@echo off

%chcp 65001%

%-----必要参数(需要填的!)-----%
%项目目录%
set PROJECT_DIR=D:\workspace\mee-web
%工具7z安装目录%
set ZIP_EXEC_PATH="C:\Program Files\7-Zip\7z"
%压缩文件包名称%
set FILE_NAME=mee-web.zip

%服务器IP%
set SSH_IP=192.168.10.1
%服务器端口%
set SSH_PORT=22
%服务器登录用户%
set SSH_USER=root
%服务器登录密码%
set SSH_PASSWORD=root@1233
%服务器工作目录%
set SSH_DIR=/home/nginx/tmp
%其他变量(不用动),输出当前路径% 
set BAT_PATH=%cd%

%-----打包-----%
call cd %PROJECT_DIR% 
if exist dist rd/s/q dist
if exist %FILE_NAME% del /a/f/q %FILE_NAME% 
call npm run build:uat --scripts-prepend-node-path=auto
call %ZIP_EXEC_PATH%  a %FILE_NAME% ./dist/**
call dir

%-----构建-----%
call echo upload file to server...
call cd %BAT_PATH%
call %BAT_PATH%\bin\pscp  -P %SSH_PORT% -pw %SSH_PASSWORD% %PROJECT_DIR%\%FILE_NAME% %SSH_USER%@%SSH_IP%:%SSH_DIR%
call echo invoke server command...
call %BAT_PATH%\bin\plink -pw %SSH_PASSWORD% -P %SSH_PORT%  %SSH_USER%@%SSH_IP% "cd %SSH_DIR% && unzip -o %FILE_NAME% && rm -rf %FILE_NAME%"

%auther by shadow%
call echo success!

pause

以上所有样例及用到的命令行工具均在此https://github.com/funnyzpc/autoDeploy有提供(`7z`除外)🎈

内容
  • UE 油画滤镜
    UE 油画滤镜
    2023-12-07
    前言.非真实感渲染的风格不经相同,其中一种便是油画风格,本文总结了如何实现油画滤镜的方法.Kuwahara Filter
  • python面试题汇总
    python面试题汇总
    2023-12-05
    1、Python 中类方法、类实例方法、静态方法有何区别?.类方法:是类对象的方法,在定义时需要在上方使用“@ clas
  • 标题:在Godot中使用Node2D创建自定义的Label
    标题:在Godot中使用Node
    2023-12-04
    在Godot游戏引擎中,我们经常需要在游戏中显示文本信息。通常,我们可以使用Label节点来实现这一点。但是,在某些情况
  • 使用Unity Localization插件进行项目本地化实战详解
    使用Unity Localiza
    2023-12-03
    在使用Unity开发游戏的过程中,本地化是必不可少的。网络上也有很多的本地化工具,本次我介绍的是Unity官方提供的Lo
  • 在MacOS下使用Unity3D开发游戏
    在MacOS下使用Unity3D
    2023-12-03
    第一次发博客,先发一下我的游戏开发环境吧。.去年2月份买了一台MacBookPro2021 M1pro(以下简称mbp)
  • 缓存面试解析:穿透、击穿、雪崩,一致性、分布式锁、Redis过期,海量数据查找
    缓存面试解析:穿透、击穿、雪崩,
    2023-12-03
    为什么使用缓存.在程序内部使用缓存,比如使用map等数据结构作为内部缓存,可以快速获取对象。通过将经常使用的数据存储在缓
  • UE开发使用Rider时缓存干爆C盘的解决方案
    UE开发使用Rider时缓存干爆
    2023-12-03
    我们在使用Rider开发UE时,Ride会为每一个项目创建一个解决方案缓存,如果开几个新项目写测试demo,我们的C盘会
  • 《对线面试官》| 高频 Python 面试题 pt.1
    《对线面试官》| 高频 Pyth
    2023-12-03
    1.聊聊 python 中的值传递和引用传递吧.值传递:.值传递意味着在函数调用时,将实际参数的值复制一份传递给函数的形
  • Unity学习笔记--数据持久化Json
    Unity学习笔记--数据持久化
    2023-12-02
    JSON相关.json是国际通用语言,可以跨平台(游戏,软件,网页,不同OS)使用,.json语法较为简单,使用更广泛。
  • C++学习-static
    C++学习-static
    2023-12-02
    全局变量使用:.作用是限定全局变量的作用范围,只能在当前文件使用,类似给它加了个private属性。.其他文件即使使用e
  • 代码的坏味道(二)——为什么建议使用模型来替换枚举?
    代码的坏味道(二)——为什么建议
    2023-12-02
    为什么建议使用对象来替换枚举?.在设计模型时,我们经常会使用枚举来定义类型,比如说,一个员工类 Employee,他有职
  • ET8开发微信小游戏之部署云服务器Nginx代理
    ET8开发微信小游戏之部署云服务
    2023-12-01
    最近用ET8搞微信小游戏测试,部署到云服务器,手机上运行,必须要用https备案过得域名,客户端使用websocket创
  • 可爱儿童内衣套装,优质棉质,柔软透气,呵护宝宝肌肤
    可爱儿童内衣套装,优质棉质,柔软
    2024-01-05
    可爱儿童内衣套装,优质棉质,柔软透气,呵护宝宝肌肤.宝宝的皮肤是非常娇嫩的,所以选择合适的内衣套装对于宝宝的健康和舒适至
  • 时尚潮流运动鞋
    时尚潮流运动鞋
    2024-01-15
    时尚潮流运动鞋.时尚潮流运动鞋一直是年轻人喜爱的时尚单品,它不仅舒适耐穿,更是一种个性的象征。随着时尚潮流不断更新,运动
  • 修身弹力牛仔裤
    修身弹力牛仔裤
    2023-12-26
    修身弹力牛仔裤:展现你的魅力.一、时尚的必备单品.修身弹力牛仔裤一直都是时尚界的必备单品,它不仅可以展现出个人的魅力,还
  • 休闲简约短袖衬衫
    休闲简约短袖衬衫
    2023-12-21
    休闲简约短袖衬衫.现代人生活节奏快,休闲简约的穿着成为时尚潮流。短袖衬衫作为经典的休闲单品,一直备受时尚人士的青睐。它舒
  • 休闲宽松T恤衫,释放自在舒适气息
    休闲宽松T恤衫,释放自在舒适气息
    2023-12-26
    休闲宽松T恤衫,释放自在舒适气息.在这个喧嚣的都市中,人们的生活节奏变得越来越快,压力也越来越大。因此,人们更加注重舒适
  • 潮流风衣大衣,彰显都市时尚风采
    潮流风衣大衣,彰显都市时尚风采
    2023-12-16
    潮流风衣大衣,彰显都市时尚风采.潮流风衣大衣一直是时尚界备受追捧的单品之一。它既能为我们遮风挡雨,又能为我们穿出时尚感,
  • 时尚修身连衣裙,展现优雅女性魅力
    时尚修身连衣裙,展现优雅女性魅力
    2023-12-06
    时尚修身连衣裙,展现优雅女性魅力.时尚修身连衣裙一直是女性衣橱里的必备单品,不仅款式多样,而且能够展现出女性的优雅魅力。
  • 保暖舒适羊毛大衣
    保暖舒适羊毛大衣
    2024-01-05
    保暖舒适羊毛大衣.冬季来临,寒冷的天气让人们更加注重保暖。在这个时候,一件保暖舒适的羊毛大衣成为了许多人的首选。羊毛大衣
  • 萌娃配饰套装,包包、帽子、围巾等,增添宝宝的时尚气息
    萌娃配饰套装,包包、帽子、围巾等
    2024-01-20
    萌娃配饰套装,为宝宝增添时尚气息.宝宝是家庭的小太阳,****们都希望给他们最好的一切。随着时尚的发展,宝宝的时尚潮流也
  • 轻盈雪纺衬衫,打造清新淑女形象
    轻盈雪纺衬衫,打造清新淑女形象
    2023-12-31
    轻盈雪纺衬衫,打造清新淑女形象.雪纺材质的衬衫一直以来都是清新淑女形象的代表,它轻盈飘逸的质地,柔软透气的触感,让人仿佛