许铮

学习 / 生活 / 工作 / 娱乐

windows批处理记录

实际工作中,为了方便应用,偶尔会使用一些批处理,但是不总用就忘了,学到的部分就先记到这里.

常用代码

毕竟批处理对于复杂的东西不那么方便,经常还是用python或者其他方式作为主攻,批处理辅助,所以获得拖拽的文件信息是必不可少的.我经常用下面的内容作为起手式.

@echo off

echo 在批处理目录运行 cd /d %~dp0
echo ---当前文件
echo 当前路径:		%CD%
echo BAT路径:		%0
echo 取文件名(+扩展名):	%~0 
echo 取全路径:		%~f0 
echo 取驱动器名:		%~d0
echo 只取路径(不包驱动器):	%~p0
echo 只取文件名:		%~n0
echo 只取文件扩展名:		%~x0
echo 取缩写全路径名:		%~s0
echo 取文件属性:		%~a0
echo 取文件创建时间:		%~t0
echo 取文件大小:		%~z0

echo ---获得的文件1
echo 文件全路径:	%1
echo 短路径名:	%~s1
echo 盘符+路径: 	%~dp1
echo 盘符:		%~d1
echo 路径:		%~p1
echo 文件+后缀名:	%~nx1
echo 文件名:	%~n1
echo 后缀名:	%~x1
echo 文件属性:	%~a1
echo 日期/时间:	%~t1
echo 文件大小:	%~z1

for %%i in (%*) do (
	echo ---遍历获得的文件
	echo 文件全路径:	%%i
	echo 短路径名:	%%~si
	echo 盘符+路径: 	%%~dpi
	echo 盘符:		%%~di
	echo 路径:		%%~pi
	echo 文件+后缀名:	%%~nxi
	echo 文件名:	%%~ni
	echo 后缀名:	%%~xi
	echo 文件属性:	%%~ai
	echo 日期/时间:	%%~ti
	echo 文件大小:	%%~zi
)

pause

注释

:: 注释内容(第一个冒号后也可以跟任何一个非字母数字的字符)
rem 注释内容(不能出现重定向符号和管道符号)
echo 注释内容(不能出现重定向符号和管道符号)〉nul
if not exist nul 注释内容(不能出现重定向符号和管道符号)
:注释内容(注释文本不能与已有标签重名)
%注释内容%(可以用作行间注释,不能出现重定向符号和管道符号)
goto 标签 注释内容(可以用作说明goto的条件和执行内容)
标签 注释内容(可以用作标签下方段的执行内容)

多行注释的例子,用了一个goto,使中间的部分被忽略了
goto start
= 可以是多行文本,可以是命令
= 可以包含重定向符号和其他特殊字符
= 只要不包含 :start 这一行,就都是注释
:start

一些问题

bat文件执行时乱码

  1. 多半是先新建了文本文档,然后改的后缀,这样保存的文件在我们电脑上大多是UTF-8编码.打开文件然后另存为ANSI编码就好了.

一些语句

注意啊,下面的注释不符合规范,只是方便观察才这么写的.
如果要实现下列的注释效果,应该用%注释内容%

@ "@"表示不显示"@"后面的命令.
@echo off ::关闭回显.表示此语句后的命令,都不显示命令本身.
echo 你好 ::回显显示你好
echo ::echo后面加个东西可以当作换行,空格也行,其他的比如"echo=","echo+","echo.",等等,据说有很多种方法,其中"echo=","echo,","echo;"会比较快一些

cd ../ ::取上级目录
cd ../../ ::取上上级目录

call c:\ucdos\ucdos.bat ::调用外部批处理
start ::调用外部程序,可接受一些参数,比如MIN最小化之类的.
start https://www.baidu.com ::使用默认浏览器打开网址
start "" "https://www.baidu.com/%var%" ::使用默认浏览器打开复杂的网址
start iexplore https://www.baidu.com ::使用IE打开网址

^ ::一行写不完的话,可以用这个符号一行变多行

% ::转义符
%% ::在批处理文件时,要写两个转义符才能正确执行.

color 3f ::更换背景颜色,炫酷哦

系统变量

系统变量的值由系统将其根据事先定义的条件自动赋值,即

这些变量系统已经给它们定义了值,不需要给它赋值,只需

要调用即可。如下:

变量名   作用
%ALLUSERSPROFILE% 本地 返回 “所有用户” 配置文件的位置
%APPDATA% 本地 返回默认情况下应用程序存储数据的位置
%CD% 本地 返回当前目录字符串。也就是获得当前路径,并将其转换为字符串
%CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行
%CMDEXTVERSION% 系统 返回当前的 “命令处理程序扩展” 的版本号
%COMPUTERNAME% 系统 返回计算机名称
%COMSPEC% 系统 返回命令行解释器可执行程序的准确路径。也就是返回 cmd.exe 的路径,一般在 C:\WINDOWS\system32\cmd.exe
%DATE% 系统 返回当前日期字符串。和使用 date/t 效果一样
%ERRORLEVEL% 系统 返回上一条命令的错误代码。通常用 0 表示正确,非0 表示错误
%HOMEDRIVE% 系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在 “本地用户和组” 中指定的
%HOMEPATH% 系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在 “本地用户和组” 中指定的
%HOMESHARE% 系统 返回用户的共享目录的网络路径。基于主目录值而设置。用户主目录是在 “本地用户和组” 中指定的
%LOGONSERVER% 本地 返回验证当前登录会话的域控制器的名称
%NUMBER_OF_PROCESSORS% 系统 指定安装在计算机上的处理器数目(所有 CPU 的总核心数)
%OS% 系统 返回操作系统名称
%PATH% 系统 指定可执行文件的搜索路径。也就是在这些目录下的可执行文件 (不仅仅是.exe,可以用 echo %PATHEXT% 查看哪些属于可执行文件。)可以直接在开始–>运行里直接执行,当然也可以在命令提示符. 批处理中直接执行。例如记事本文件位于 C:\WINDOWS\NOTEPAD.EXE ,那么我们点击 “开始–>运行,输入 NOTEPAD “ 就可以打开记事本了。或者我们打开 CMD 窗口 ,直接输入 NOTEPAD 也可以打开记事本
%PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表
%PROCESSOR_ARCHITECTURE% 系统 返回处理器的芯片体系结构。返回值为 x86 或 IA64 或 RISC。这些都是常见的架构 ,或者称作指令集。Windows 操作系统都是基于 x86 架构开发的,国产CPU 不是采用 x86 指令集 ,所以无法运行 Windows
%PROCESSOR_IDENTFIER% 系统 返回处理器说明
%PROCESSOR_LEVEL% 系统 返回计算机上安装的处理器型号
%PROCESSOR_REVISION%   返回处理器版本号
%PROMPT% 本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成
%RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成
%SYSTEMDRIVE% 系统 返回包含Windows server operation system根目录(即系统根目录)的驱动器
%SYSTEMROOT% 系统 返回 Windows server operation system 根目录位置
%TEMP% 和 %TMP% 系统用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP
%TIME% 系统 返回当前时间字符串。使用与 time /t 命令相同的格式
%USERDOMAIN% 本地 返回包含用户账户的域的名称
%USERNAME% 本地 返回当前登录的用户的名称
%USERPROFILE% 本地 返回当前用户的配置文件的位置
%WINDIR% 系统 返回操作系统目录的位置

win10系统,登录用户:siwuxie095,testx.bat保存在桌面,测试如下:

  1. %ALLUSERSPROFILE%

img

img

  1. %APPDATA%

img

img

  1. %CD%

img

img

  1. %CMDCMDLINE%

img

img

  1. %CMDEXTVERSION%

img

img

  1. %COMPUTERNAME%

img

img

  1. %COMSPEC%

img

img

  1. %DATE%

img

img

  1. %ERRORLEVEL%

img

img

  1. %HOMEDRIVE%

img

img

  1. %HOMEPATH%

img

img

  1. %HOMESHARE%

img

img

  1. %LOGONSERVER%

img

img

  1. %NUMBER_OF_PROCESSORS%

img

img

  1. %OS%

img

img

  1. %PATH%

img

img

  1. %PATHEXT%

img

img

  1. %PROCESSOR_ARCHITECTURE%

img

img

  1. %PROCESSOR_IDENTFIER%

img

img

  1. %PROCESSOR_LEVEL%

img

img

  1. %PROCESSOR_REVISION%

img

img

  1. %PROMPT%

img

img

  1. %RANDOM%

img

img

  1. %SYSTEMDRIVE%

img

img

  1. %SYSTEMROOT%

img

img

  1. %TEMP%

img

img

  1. %TMP%

img

img

  1. %TIME%

img

img

  1. %USERDOMAIN%

img

img

  1. %USERNAME%

img

img

  1. %USERPROFILE%

img

img

  1. %WINDIR%

img

img

应用:

如:利用 %PROCESSOR_ARCHITECTURE% 判断当前计算机是几位的

@echo off
if "%PROCESSOR_ARCHITECTURE:~0,3%" equ "x86" (echo 32位计算机) else echo 64 位计算机
pause>nul

sublime中:

img

运行一览:

img

如:利用系统变量实现清理系统垃圾

@echo off
title 清除 Windows 10 系统垃圾
del /f /s /q %systemdrive%\*.tmpdel /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\*.*
::直接删除 C:\Windows\temp 文件夹 ,并新建 temp 文件夹。
rd /s /q %windir%\temp & md %windir%\temp
::删除用户名下的 cookies 文件夹内容。
del /f /q "%userprofile%\cookies\*.*"
::删除最近浏览文件的快捷方式
del /f /q "%userprofile%\recent\*.*"
::清除用户临时页面文件
del /f /s /q "%userprofile%\Local Settings\TemporaryInternetFiles\*.*"
::清除用户临时文件
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "f:\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\recent\*.*"
::删除 C 盘安装信息文件
del /f /s /q "C:\Program Files\Installshield InstallationInformation\*.*"
::删除升级补丁信息del /f /s /q "C:\WINDOWS\SoftwareDistribution\Download\*.*"
::删除历史记录rd /s /q "%userprofile%\Local Settings\History"
dir %SystemRoot%\$*$ /ad/b >%SystemRoot%\vTmp.txt
for /f %%a in (%SystemRoot%\vTmp.txt) do rd /s /q"
%SystemRoot%\%%a"
echo 清除系统垃圾完成 & pause
最近的文章

自救常识

按自己可能遇到的概率排序.尽量保证每一条都基于原理查验过.1飞机遇险迫降时,救生衣不能在机舱内充气救生衣在拉动充气装置的拉绳后,会快速释放储气瓶中的气体,产生8~15公斤的浮力.飞机水面迫降后,如果机舱进水,人员可能会被浮力困在机舱顶部.2钢化玻璃的边缘比较脆弱,破窗要针对角落.比如封闭客车的车窗,正面很难击破,破窗逃生时,尽量都砸在边角处.原理可以查一下”鲁伯特之泪”,钢化玻璃利用玻璃液的冷却不均来强化压应力,使一般的子弹也无法击穿,但是其薄弱之处的亚应力更容易被打破平衡,一旦平衡被破坏...…

笔记继续阅读
更早的文章

Unity3D学习

本来是打算学习Godot的,Godot方方面面都符合我的需求.但我做的短期职业规划里列举的需求中,最好的方案是专攻Unity和3Dmax,以便适应行业需求,加上Unity学习资源也比较多,上手也更容易.所以先挑了Unity作为过渡.Unity基础一直以来的自学经验,让我对教程的选择比较谨慎,最后发现UnityLearn不错,就先按部就班的学习上边的免费教程.教程都是按照需求和步骤分组好了的,按照教程一步步走就好.先是教安装和注册.然后会有一个选择MicroGame来给用户体验基本的Unit...…

笔记继续阅读