返回列表 发帖

[原创] 【老刘整理】批处理常用命令&语句

自己整理多年,分享一下
一些是原创,一些是转载,还有一些是修改~
有什么不足欢迎大家指正

使该批处理在管理员权限下运行
Ver | find "5." >nul && goto Administrator
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if %Errorlevel% EQU 0 goto Administrator
Mshta vbscript:createobject("shell.application").shellexecute("%~f0","%*","","runas",1)(window.close)
EXIT /B
:Administrator
PUSHD %~dp0
Pause>nulCOPY
检测系统版本、位数
ver | find "版本号" > NUL && 成功时执行命令 || 失败时执行命令
常用版本号:
XP: 5.0 5.1 5.2
win7: 6.0 6.1
win8: 6.2. 6.3. 6.4.
win10: 10.
IF /i "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" (
echo 这是一个64位的系统!
) else  echo 这是一个32位的系统!COPY
精确检测桌面路径、我的文档路径
Set "用户目录路径键值=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
For /f "Tokens=3* delims=*" %%a in (
'Reg Query "%用户目录路径键值%" /v "Desktop" 2^>nul'
) do Set "桌面路径=%%a"
for /f "tokens=3*" %%a in (
'reg query "%用户目录路径键值%" /v "Personal" 2^>nul'
) do Set "我的文档目录=%%a"
Set 桌面路径
Set 我的文档目录
pause>nulCOPY
判断数字合法性:
set /a _var=%var% 2>nul
if "%_var%"=="%var%" echo %var%是合法的十进制数值COPY
蜂鸣(适用于XP)
for /f "delims=R`" %%a in (
'cmd /u /c echo 切'
) do Set "蜂鸣=%%a"
set/p=%蜂鸣%<nulCOPY
刷新桌面、系统
>%TMP%\TMP.INF (
Echo [Version]
Echo Signature=$Chicago$
Echo Provider=老刘
Echo [DefaultInstall])
RUNDLL32 SETUPAPI.DLL,InstallHinfSection ^
DefaultInstall 128 %TMP%\TMP.INF
DEL /F %TMP%\TMP.INFCOPY
——————————————————
将文本abc.txt的内容(第一行)赋值给变量FirstLine。
set /p FirstLine=<abc.txtCOPY
批处理全屏运行代码(仅限32位XP系统):
@echo off
echo exit | CMD /k prompt e 100 B4 00 B0 12 CD 10 B0 03 CD 10 CD 20 $_g$_q$_ | debug 1>nul
chcp 437 1>nul
graftabl 936 1>nul
PAUSECOPY
————————————————
CMD获取当前目录的变量
@echo off
echo %~dpnx0
rem d=盘符 p=路径 n=名字 x=拓展名 0=%0
REM 也可%~f0
echo.
echo %~s0
rem s=完整短文件名路径
pause>nulCOPY
使用XCOPY获取按键
set "按键="
for /f "delims=" %%a in ('xcopy /w . . 2^>nul') do if not defined 按键 set "按键=%%a"
set "按键=%按键:~-1%"
if "%按键%" EQU "" (echo 无效按键) else echo 你按下了%按键%COPY
————————————————
10进制转为16进制的函数,调用方法:%d-h:#a#=变量名%
set "d-h=setlocal enabledelayedexpansion&set/a dx=#a#&set xs=0123456789abcdef&(for /l %%z in (1,1,4) do set /a x%%z=dx%%16,dx=dx/16)&(for /f "tokens=1-4" %%1 in ("!x1! !x2! !x3! !x4!") do set hx=!xs:~%%4,1!!xs:~%%3,1!&(if !hx!==00 set hx=)&(for %%z in ("!hx!!xs:~%%2,1!!xs:~%%1,1!") do endlocal&set #a#=%%~z))"COPY
取字符串长度函数,调用方法:%len:#a#=结果变量名 字符串变量名%
set "len=for /f "tokens=1-3" %%1 in ("#a#") do setlocal enabledelayedexpansion&(if defined %%2 (set /a z=8180,x=0&(for /l %%a in (1,1,14) do set/a "y=(z-x)/2+x"&(for %%b in (!y!) do if "!%%2:~%%b,1!" equ "" (set/a z=y) else (set/a x=y)))) else (set z=0))&(for %%z in ("!z!") do endlocal&set %%1=%%~z)"COPY
——————————————————————————————
变量操作:

截取——
%变量名:~忽略的字符长度,显示的字符长度%
%变量名:~从起始处忽略的字符长度%
%变量名:~,从起始处显示的字符长度%


替换——%变量名:要替换的内容=替换后的内容%
——————————
COMMAND 1>nul 屏蔽回显(同COMMAND >nul)
COMMAND 2>nul 屏蔽错误提示

利用句柄备份屏蔽命令回显和错误回显,保留正常回显:
@echo off 2>nul 3>&2COPY
mshta vbscript:VBS命令(Window.Close)COPY
给Number的值加一,同理还可用-*/代替
set /a number+=1COPY
——————————————————————————————
INF更新INI文件函数块
Goto :Eof
:UpdateInis
Pushd "%Tmp%"
(For %%a in (
"[Version]"
"Signature=$Chicago$"
"[DefaultInstall]"
"UpdateInis=更新INI配置文件"
"[更新INI配置文件]"
) Do Echo %%~a)>.\INF.TMP
Echo "%~1","%~2",%~3 >>.\INF.TMP
RUNDLL32 SETUPAPI.DLL,InstallHinfSection ^
DefaultInstall 128 .\INF.TMP
Del /F .\INF.TMP 2>nul
PopdCOPY
——————————————————————————————
获取回车符:
setlocal enabledelayedexpansion
for /f "delims=" %%a in (
'ipconfig^|findstr /i "Address"'
) do set CarriageReturn=%%a
set CarriageReturn=!CarriageReturn:~-1!COPY
获取换行符:
set LineFeed=^
%空行001%
%空行002%COPY
注:必须要有两个空行用作转义
另:请使用!Var!形式调用,使用%var%或Call+%%var%%会使回车符丢失,
                换行符忽略后面的字符串。
——————————————————————————————
certutil -decodehex hex.txt bin.txtCOPY
::Hex2Bin
certutil -encode bin.txt Encode.txtCOPY
::Base64_Encode
certutil -decode Encode.txt Decode.txtCOPY
::Base64_Decode
——————————————————————————————
检测第三方是否存在/可用
Set 第三方名称=PrintANSI
For %%a in (%第三方名称%.exe) Do ^
If "%%~$PATH:a" EQU "" ^
If Not Exist .\%第三方名称%.exe ^
Echo 第三方丢失。COPY
——————————————————————————————
批处理调用VBS创建快捷方式>>(Desktop为桌面)
mshta VBScript:Execute("Set a=CreateObject(""WScript.Shell""):Set b=a.CreateShortcut(a.SpecialFolders(""Desktop"") & ""\快捷方式名称.lnk""):b.TargetPath=""快捷方式指向的文件"":b.WorkingDirectory=""工作目录路径"":b.Save:close")COPY
Clip——命令行工具的输出重定向到 Windows 剪贴板

命令行|批处理安装INF:
RunDll32 advpack.dll,LaunchINFSection INF文件路径.INF,DefaultInstallCOPY
RUNDLL32 SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 INF文件路径.INF COPY
rundll用法:rundll32 <DLL文件名>,<入口点>,<调用参数>
注:RUNDLL的对入口点大小写敏感!

强制终止进程
TASKKILL /f /im 进程名(可用通配符)COPY
第二种干掉指定进程的方法:
FOR /F "TOKENS=2" %%A IN ('TASKLIST ^| FIND /i "explorer.exe"') DO (tskill %%A 1>nul 2>&1)COPY
拨号:
rasdial 连接名称(一般是“宽带连接") 帐号 密码COPY
得到CMD释放出的文件
wmic process where name="cmd.exe" get commandlineCOPY
获得已保存的wifi列表
netsh wlan show profilesCOPY
显示已保存的cmcc热点的信息(包括密码)
netsh wlan show profile name="cmcc" key=clearCOPY
共享WIFI:
netsh wlan set hostednetwork mode=allow ssid=wifi名称 key=密码COPY
开启:
netsh wlan start hostednetworkCOPY
关闭:
netsh wlan stop hostednetworkCOPY
本地连接IP4协议设置:
Netsh Interface IP SET Address 本地连接 Static 1.0.0.0 255.255.255.1COPY
卸载指定补丁:
wusa /uninstall /kb:COPY
强制把一个文本文件当VBS运行
Wscript(cscript) -nologo -e:vbscript VBScriptFilesPATHCOPY
sort /+65535 你的文件.txt /o 倒序结果.txtCOPY
rundll32.exe shell32.dll #60 %弹出关机对话框%COPY
Fsutil file createnew FilePath FileSize %创建指定大小文件,使用Nul填充%COPY
Takeown /f "FilePath" && Icacls "FilePath" /grant administrators:F %得到文件所有权及权限%COPY
mountvol        驱动器虚拟成路径
subst        路径虚拟成驱动器
4

评分人数

返回列表