Bat命令笔记
批处理中 rem 和 @rem ”的区别?
rem 在批处理文件或配置文件中加入注释
@ 在批处理中隐藏命令行本身的回显
@rem 表示在回显状态开启时也不显示该注释行。
当echo状态为关闭(echo off)时rem和@rem 作用相同,均无显示
当echo状态为开启(echo on )时
命令提示符后将显示出 rem注释的内容,@rem 则不显示该命令行。
-----------------------------------------------------------------------------------------------------------------
获取计算机名/日期/时间:
echo ====%COMPUTERNAME%\%DATE% \%TIME%======
------------------------------------------------------------------------------------------------------------------
批处理中的@SET install_dir=%~1 何解?
@SET install_dir=%~1
其中:
@ 表示关闭回显
set install_dir= 表示将“install_dir”设置为变量
%~1 表示标量参数扩展,要是文件被拖向批处理执行,%~1表示第一个拖入的文件路径(路径不带引号),或CALL命令执行的第一个变量
综述
@SET install_dir=%~1
设置变量“install_dir”为拖入的第一个文件路径(不含引号)或CALL命令执行的第一个变量
--------------------------------------------------------------------------------------------
批处理命令——%0
在批处理中,可以使用 %* 代表所有参数%1-%9代表9个参数,%0代表对自身进行操作:
如:提取路径、文件名、后缀名、文件大小等等.....
可以充分利用%0的特点,很方便的完成获取很多的内容。
举例如下:新建一个文本文件,命名为percent1,修改文件类型为bat,用Notepad++打开文件编辑内容如下:
@echo off
2 rem 1.获取批处理自身的完整路径
3 echo %0
4 rem 2.获取批处理自身的完整路径,并去掉首尾的引号
5 echo %~0
6 rem 3.获取批处理自身的文件名和后缀名
7 echo %~nx0
8 rem 4.获取批处理自身的文件名
9 echo %~n0
10 rem 5.获取批处理自身的后缀名
11 echo %~x0
12 rem 6.获取批处理自身的完整路径,不含文件名
13 echo %~dp0
14 rem 7.获取批处理自身的盘符
15 echo %~d0
16 rem 8.获取批处理自身的大小
17 echo %~z0
18 rem 9.获取批处理自身的修改时间
19 echo %~t0
20 pause
----------------------------------------------------------------------------------------
Dos/批处理net命令详解
共享文件夹
net share
用法:
net share 1=c: /users:1
这样就共享了C盘,共享名称为1文件夹,同时限制链接用户数为1人。
查看局域网内的计算机名称和共享文件夹
net view
用法:
net view \\IP
这样就会显示IP的计算机名称和共享文件夹
停止服务
net stop
用法:
net stop telnet
这样就禁用了服务名为telnet的服务
开启服务
net start
用法:
net start telnet
这样就启用了服务名为telnet的服务
建立一个用户并升级为超级管理员
net user
用法:
net user 123456 /add
net localgroup Administrators 123456 /add
这样建立了一个123456的用户 并且添加为超级管理员
映射共享文件夹到本地
net use
用法:
net use z: \\ip\1
将远程的共享文件夹1映射到本地的Z盘 要对方有共享1这个文件夹后才能映射到本地
要不让会显示67错误 找不到网络名
建立IPC连接
net use
用法:
net use \\ip\ipc$ /user:用户名
这样就建立了一个IPC$ 连接
建立非空连接
用法:
net use \\IP\ipc$ "用户名" /user:"密码"
这样就建立了一个IPC$ 连接并非空链接
本地与远程的时间同步
用法:
net time \\ip /set
这样的对方时间就和本地同步了
激活用户
用法:
net user guest /active:yes
这样就激活了guest用户 yes表示激活 NO表示禁止
设定用户密码
用法:
net user guest 1234
在guest后面得1234表示为guest 的密码
------------------------------------------------------------------------------
批处理:PUSHD和CD的区别
cd /d "%~dp00PE_0606_for_ud" : 改变当前路径到 批处理所在路径下的dp00PE_0606_for_ud
cd /d "%~dp0" : 改变当前路径到 批处理所在路径
%~dp0 是对%0的扩展,d是drive,也就是盘符,p是路径,所以%~dp0是指批处理所在的路径(包括盘符)
pushd是设定工作目录
所以 PUSHD %~dp0 就是设定批处理所在的目录为工作目录
"%~dp00PE_0606_for_ud"也就是批处理所在目录下0PE_0606_for_ud目录
当cd的目标路径包括盘符,需要加/d
cd /d "%~dp0"
cd /d "%~dp00PE_0606_for_ud"
这两个就不用在解释了把
一般和POPD配套使用.(回到上一个PUSHD前的路径)
也可以用于SETLOCAL语句中防止运行目录被改变.
例子:
echo.dangqianmulushi1:%cd%
PUSHD %~dp0
echo.dangqianmulushi2:%CD%
echo.dangqianmulushi2222222:%CD%
echo.dangqianmulushi3:%cd%
call :test
echo.diaoyong pichuli biaoqian hou mulu shi :%cd%
pause
:test
setlocal
pushd e:\
echo.dangqianmulushi4:%cd%
goto :eof
dangqianmulushi1:C:\Windows
dangqianmulushi2:D:\
dangqianmulushi2222222:D:\
dangqianmulushi3:D:\
dangqianmulushi4:e:\
diaoyong pichuli biaoqian hou mulu shi :D:\
----------------------------------------------------------------
bat中eof
eof是“end of file”的缩写
在批处理作用主要有二:
1、在无call的情况下,会直接退出批处理,此时等同于exit
2、在call的情况下,会中止call,继续执行其他命令
示例:
@echo off
call :str1
pause
goto :eof
echo 此行代码不会被运行
:str1
echo 此行代码运行
goto :eof
---------------------------------------------------------
批处理语句中的 2>nul 1>nul
>nul 是屏蔽操作成功显示的信息,但是出错还是会显示(即1>nul)
2>nul 是屏蔽操作失败显示的信息,如果成功依旧显示。
>nul 2>nul 就是正确的错误的一起屏蔽掉,就啥也不显示了。
在最后面加1>nul 2>nul这样不管文件是否删除成功都不会显示任何消息。
例如
del c:\test.txt 1>nul 2>nul
---------------------------------------------------------------------------
分析 2>&1
对于2>&1的理解,2就是标准错误,1是标准输出,那么这条命令不就是相当于把标准错误重定向到标准输出么?是的。
为什么是&1而不是1,这里& 符号是什么?& 符号可以理解为引用(reference)。&1 就是对标准输出的引用。