标题: [原创] 【老刘整理】批处理常用命令&语句 [打印本页]
作者: 老刘1号 时间: 2017-6-24 17:19 标题: 【老刘整理】批处理常用命令&语句
自己整理多年,分享一下
一些是原创,一些是转载,还有一些是修改~
有什么不足欢迎大家指正
使该批处理在管理员权限下运行- 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>nul
复制代码
检测系统版本、位数
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位的系统!
复制代码
精确检测桌面路径、我的文档路径- 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>nul
复制代码
判断数字合法性:- set /a _var=%var% 2>nul
- if "%_var%"=="%var%" echo %var%是合法的十进制数值
复制代码
蜂鸣(适用于XP)- for /f "delims=R`" %%a in (
- 'cmd /u /c echo 切'
- ) do Set "蜂鸣=%%a"
- set/p=%蜂鸣%<nul
复制代码
刷新桌面、系统- >%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.INF
复制代码
——————————————————
将文本abc.txt的内容(第一行)赋值给变量FirstLine。- set /p FirstLine=<abc.txt
复制代码
批处理全屏运行代码(仅限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
- PAUSE
复制代码
————————————————
CMD获取当前目录的变量- @echo off
- echo %~dpnx0
- rem d=盘符 p=路径 n=名字 x=拓展名 0=%0
- REM 也可%~f0
- echo.
- echo %~s0
- rem s=完整短文件名路径
- pause>nul
复制代码
使用XCOPY获取按键- set "按键="
- for /f "delims=" %%a in ('xcopy /w . . 2^>nul') do if not defined 按键 set "按键=%%a"
- set "按键=%按键:~-1%"
- if "%按键%" EQU "" (echo 无效按键) else echo 你按下了%按键%!
复制代码
————————————————
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))"
复制代码
取字符串长度函数,调用方法:%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)"
复制代码
——————————————————————————————
变量操作:
截取——
%变量名:~忽略的字符长度,显示的字符长度%
%变量名:~从起始处忽略的字符长度%
%变量名:~,从起始处显示的字符长度%
替换——%变量名:要替换的内容=替换后的内容%
——————————
COMMAND 1>nul 屏蔽回显(同COMMAND >nul)
COMMAND 2>nul 屏蔽错误提示
利用句柄备份屏蔽命令回显和错误回显,保留正常回显:复制代码
- mshta vbscript:VBS命令(Window.Close)
复制代码
给Number的值加一,同理还可用-*/代替复制代码
——————————————————————————————
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
- Popd
复制代码
——————————————————————————————
获取回车符:- setlocal enabledelayedexpansion
- for /f "delims=" %%a in (
- 'ipconfig^|findstr /i "Address"'
- ) do set CarriageReturn=%%a
- set CarriageReturn=!CarriageReturn:~-1!
复制代码
获取换行符:- set LineFeed=^
- %空行001%
- %空行002%
复制代码
注:必须要有两个空行用作转义
另:请使用!Var!形式调用,使用%var%或Call+%%var%%会使回车符丢失,
换行符忽略后面的字符串。
——————————————————————————————- certutil -decodehex hex.txt bin.txt
复制代码
::Hex2Bin- certutil -encode bin.txt Encode.txt
复制代码
::Base64_Encode- certutil -decode Encode.txt Decode.txt
复制代码
::Base64_Decode
——————————————————————————————
检测第三方是否存在/可用- Set 第三方名称=PrintANSI
- For %%a in (%第三方名称%.exe) Do ^
- If "%%~$PATH:a" EQU "" ^
- If Not Exist .\%第三方名称%.exe ^
- Echo 第三方丢失。
复制代码
——————————————————————————————
批处理调用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")
复制代码
Clip——命令行工具的输出重定向到 Windows 剪贴板
命令行|批处理安装INF:- RunDll32 advpack.dll,LaunchINFSection INF文件路径.INF,DefaultInstall
复制代码
- RUNDLL32 SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 INF文件路径.INF
复制代码
rundll用法:rundll32 <DLL文件名>,<入口点>,<调用参数>
注:RUNDLL的对入口点大小写敏感!
强制终止进程- TASKKILL /f /im 进程名(可用通配符)
复制代码
第二种干掉指定进程的方法:- FOR /F "TOKENS=2" %%A IN ('TASKLIST ^| FIND /i "explorer.exe"') DO (tskill %%A 1>nul 2>&1)
复制代码
拨号:- rasdial 连接名称(一般是“宽带连接") 帐号 密码
复制代码
得到CMD释放出的文件- wmic process where name="cmd.exe" get commandline
复制代码
获得已保存的wifi列表复制代码
显示已保存的cmcc热点的信息(包括密码)- netsh wlan show profile name="cmcc" key=clear
复制代码
共享WIFI:- netsh wlan set hostednetwork mode=allow ssid=wifi名称 key=密码
复制代码
开启:- netsh wlan start hostednetwork
复制代码
关闭:- netsh wlan stop hostednetwork
复制代码
本地连接IP4协议设置:- Netsh Interface IP SET Address 本地连接 Static 1.0.0.0 255.255.255.1
复制代码
卸载指定补丁:复制代码
强制把一个文本文件当VBS运行- Wscript(cscript) -nologo -e:vbscript VBScriptFilesPATH
复制代码
- sort /+65535 你的文件.txt /o 倒序结果.txt
复制代码
- rundll32.exe shell32.dll #60 %弹出关机对话框%
复制代码
- Fsutil file createnew FilePath FileSize %创建指定大小文件,使用Nul填充%
复制代码
- Takeown /f "FilePath" && Icacls "FilePath" /grant administrators:F %得到文件所有权及权限%
复制代码
mountvol 驱动器虚拟成路径
subst 路径虚拟成驱动器
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |