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的区别

pushd %~dp0 : 把批处理所在的路径设为当前路径
cd /d "%~dp00PE_0606_for_ud" : 改变当前路径到 批处理所在路径下的dp00PE_0606_for_ud
cd /d "%~dp0" : 改变当前路径到 批处理所在路径
首先 %0 是指批处理文件本身
%~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"
这两个就不用在解释了把
PUSHD临时指定当前路径.
一般和POPD配套使用.(回到上一个PUSHD前的路径)
也可以用于SETLOCAL语句中防止运行目录被改变.
例子:
CD /D C:\WINDOWS
echo.dangqianmulushi1:%cd%
PUSHD %~dp0
echo.dangqianmulushi2:%CD%
PUSHD D:\
echo.dangqianmulushi2222222:%CD%
popd
echo.dangqianmulushi3:%cd%
call :test
echo.diaoyong pichuli biaoqian hou mulu shi :%cd%
pause
:test
setlocal
pushd e:\
echo.dangqianmulushi4:%cd%
goto :eof
 
PS D:\> D:\ttt.bat
D:\>CD /D C:\WINDOWS
C:\Windows>echo.dangqianmulushi1:C:\Windows
dangqianmulushi1:C:\Windows
C:\Windows>PUSHD D:\
D:\>echo.dangqianmulushi2:D:\
dangqianmulushi2:D:\
D:\>PUSHD D:\
D:\>echo.dangqianmulushi2222222:D:\
dangqianmulushi2222222:D:\
D:\>popd
D:\>echo.dangqianmulushi3:D:\
dangqianmulushi3:D:\
D:\>call :test
D:\>setlocal
D:\>pushd e:\
e:\>echo.dangqianmulushi4:e:\
dangqianmulushi4:e:\
e:\>goto :eof
D:\>echo.diaoyong pichuli biaoqian hou mulu shi :D:\
diaoyong pichuli biaoqian hou mulu shi :D:\
D:\>pause

 ----------------------------------------------------------------

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 就是对标准输出的引用。

posted @ 2020-04-02 09:16  技术小生  阅读(509)  评论(0编辑  收藏  举报