记录我在cmd中操作遇到的一些问题。以及Bat脚本常用的一些命令。

一、bat批处理文件调用python脚本,此时执行.bat文件出现了无模块的问题。(安装python模块)

1.安装pip 包
cmd 进入命令行输入:python -m pip install -U pip setuptools
安装成功以后,在命令行中进入到Scripts文件夹,以便执行下面的命令,我的是C:\python\Scripts
在这里插入图片描述
Windows下长这样
在这里插入图片描述
2、安装所需要的模块
需要进入到Scripts文件夹中,或者你不想每次进入到这里也可以设置环境变量。
pip install [model] (此处的model 可以是任意你想要安装的模块)
在这里插入图片描述



二、cmd执行带参的bat脚本,bat脚本中又执行一个带参的python脚本

1.执行bat脚本
在这里插入图片描述
2.编写bat脚本
在这里插入图片描述
注意:
(1)切记!切记!切记!set不得放在if语句和for语句中,否则像tpath这种路径使用echo打不开,会出现报错:ECHO状态已打开。
(2)/I代表字符串不区分大小写。
(3)切记第四行的" "不能与双引号粘在一起。
(4)set 变量名=变量值,之间不应该有空格。
(5)win中文件路径使用\ , Linux中使用/。
(6)D:\NewGit\OA\boluo\ ,代表目录
(7)D:\NewGit\OA\boluo,只代表boluo这个文件夹
(8)对文件进行操作时,需要先打开这个目录

三、bat文件常用的一些命令

1. @
代表命令行回显屏蔽符,加上后控制台不会显示你这行命令,如果不加会显示
在这里插入图片描述
在这里插入图片描述

2. echo
输出文本

3. echo.
紧挨着,输出空白一行

4. echo off
关闭后续命令行回显,相当于给每一行命令加上了@,命令行回显屏蔽符。
特别地,也可以给自己加上@,那样控制台就不会显示echo off
在这里插入图片描述
5. color
color A0 代表前景台和背景的颜色,还有多种颜色。

6. call
(1)调用其他批处理程序,只能是.bat或者.cmd文件
(2)调用本文件内命令段,被调用的命令段以你自定义的标签:checkError开头,以命令goto :eof结尾

call :checkError
:checkError
for /f "tokens=*" %%i in ('type log.txt^|find /i "error "') do (
	echo ----发生生成错误,已停止继续构建,请检查原因重试----
	echo %%i
	exit 1
)
goto:eof

7. goto
跳转,特别的,goto :eof,意味着结束

8. >> 与 >
重定向符,>>是在文件末尾追加,而>是覆盖
特别的,以下命令行是将字符串覆盖文件已有的内容

echo "apple">version.txt    //文本中显示 "apple"
echo apple>version.txt      //文本中显示 apple

9. set
设置变量

set b=12
echo %b%

10.特殊的第三方命令

1) devenv
devenv是Visual Studio的可执行程序,可以编译.sln项目文件
2) cmake
使用cmake构建文件
3) qmake
使用QT进行编译.pro文件
4) nmake
编译makefile文件,解释里面的语句并执行相应的指令。

11. mkdir / rmdir / rd
创建文件夹 / 删除文件夹,cd 中的/d代表直接转换到后面的路径
rmdir = rd

set BUILD_PATH=%CD%\build\
mkdir %BUILD_PATH%
cd /d %BUILD_PATH%    
:: /S 代表也会删除子目录和子文件,/Q 代表安静模式,删除不需要删除      
rmdir /S /Q %BUILD_PATH%

12. del
用来删除文件

:: /f 强制删除只读文件,/s 从所有子目录删除指定文件,/q 安静模式
del /f /s /q temp.ini

13. %name%
如果一个名称用%括起来,那么就是用的它的赋值,而不是本身的字母。名称最好是大写加下划线。

echo time         显示time这个单词
echo %TIME%       显示系统时间
echo %CD%         显示.bat文件所在目录

14. %1
外部变量,接受外部参数的格式是%1 -%9 ,共9个变量

15. ::
代表注释,后面跟文本内容

16. start
启动一个单独的窗口运行指定的程序或命令

17. pause
使窗口停留,可以按任意键关闭cmd

18. copy
复制version.txt文件,并命名为apple.txt,/Y 代表不提示直接覆盖

copy version.txt apple.txt /Y

19. xcopy
复制文件夹bin到six文件夹中,包括子目录
/s 代表复制目录和子目录,除了空的
/e 代表复制目录和子目录,包括空目录
/y 代表不提示直接覆盖

@xcopy bin setup\main\six\ /s /e /y

20. if
判断文件是否存在,括号与文件名必须隔开

if exist test.txt (
	echo yes
) else (
	echo no
)

if not exist test.txt (
	echo yes
)

21. cmd 一闪而过的可能
1)命令行语法错误
2)程序执行完毕,可以加pause



四、特殊操作
1.批量删除文件中含有某个字符串的一行

在apple.cpp文件中查找到字符串,然后删除这一行,移入到新文件tudou.txt文件中,在删除旧文件,将新文件改名。

::文件操作采用utf-8编码(65001),如果不设置会默认使用ANSII编码,导致cpp文件格式出错
chcp 65001
find /v "port = 8988;" < D:\apple.cpp > D:\tudou.cpp
del /a /f D:\apple.cpp
::旧文件才能加路径
ren D:\tudou.cpp apple.cpp
::文件操作处理后,需要还原为gb2312编码(936),后续执行其他的window程序,必须为gbk编码格式
chcp 936
2.查找文件夹中的指定文件(递归与非递归)
//查找所有名字带".dll"的文件,需要先打开目录
//如果只查找当前目录时(非递归)删除/r

@cd /d %CD%\bin\tools\dll\
for /r %%a in (*.dll) do (
	@echo %%a
)
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐