Board logo

标题: [原创] 【老刘整理】批处理常用命令&语句 [打印本页]

作者: 老刘1号    时间: 2017-6-24 17:19     标题: 【老刘整理】批处理常用命令&语句

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

使该批处理在管理员权限下运行
  1. Ver | find "5." >nul && goto Administrator
  2. >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
  3. if %Errorlevel% EQU 0 goto Administrator
  4. Mshta vbscript:createobject("shell.application").shellexecute("%~f0","%*","","runas",1)(window.close)
  5. EXIT /B
  6. :Administrator
  7. PUSHD %~dp0
  8. 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.
  1. IF /i "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" (
  2. echo 这是一个64位的系统!
  3. ) else  echo 这是一个32位的系统!
复制代码
精确检测桌面路径、我的文档路径
  1. Set "用户目录路径键值=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
  2. For /f "Tokens=3* delims=*" %%a in (
  3. 'Reg Query "%用户目录路径键值%" /v "Desktop" 2^>nul'
  4. ) do Set "桌面路径=%%a"
  5. for /f "tokens=3*" %%a in (
  6. 'reg query "%用户目录路径键值%" /v "Personal" 2^>nul'
  7. ) do Set "我的文档目录=%%a"
  8. Set 桌面路径
  9. Set 我的文档目录
  10. pause>nul
复制代码
判断数字合法性:
  1. set /a _var=%var% 2>nul
  2. if "%_var%"=="%var%" echo %var%是合法的十进制数值
复制代码
蜂鸣(适用于XP)
  1. for /f "delims=R`" %%a in (
  2. 'cmd /u /c echo 切'
  3. ) do Set "蜂鸣=%%a"
  4. set/p=%蜂鸣%<nul
复制代码
刷新桌面、系统
  1. >%TMP%\TMP.INF (
  2. Echo [Version]
  3. Echo Signature=$Chicago$
  4. Echo Provider=老刘
  5. Echo [DefaultInstall])
  6. RUNDLL32 SETUPAPI.DLL,InstallHinfSection ^
  7. DefaultInstall 128 %TMP%\TMP.INF
  8. DEL /F %TMP%\TMP.INF
复制代码
——————————————————
将文本abc.txt的内容(第一行)赋值给变量FirstLine。
  1. set /p FirstLine=<abc.txt
复制代码
批处理全屏运行代码(仅限32位XP系统):
  1. @echo off
  2. echo exit | CMD /k prompt e 100 B4 00 B0 12 CD 10 B0 03 CD 10 CD 20 $_g$_q$_ | debug 1>nul
  3. chcp 437 1>nul
  4. graftabl 936 1>nul
  5. PAUSE
复制代码
————————————————
CMD获取当前目录的变量
  1. @echo off
  2. echo %~dpnx0
  3. rem d=盘符 p=路径 n=名字 x=拓展名 0=%0
  4. REM 也可%~f0
  5. echo.
  6. echo %~s0
  7. rem s=完整短文件名路径
  8. pause>nul
复制代码
使用XCOPY获取按键
  1. set "按键="
  2. for /f "delims=" %%a in ('xcopy /w . . 2^>nul') do if not defined 按键 set "按键=%%a"
  3. set "按键=%按键:~-1%"
  4. if "%按键%" EQU "" (echo 无效按键) else echo 你按下了%按键%!
复制代码
————————————————
10进制转为16进制的函数,调用方法:%d-h:#a#=变量名%
  1. 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#=结果变量名 字符串变量名%
  1. 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 屏蔽错误提示

利用句柄备份屏蔽命令回显和错误回显,保留正常回显:
  1. @echo off 2>nul 3>&2
复制代码
  1. mshta vbscript:VBS命令(Window.Close)
复制代码
给Number的值加一,同理还可用-*/代替
  1. set /a number+=1
复制代码
——————————————————————————————
INF更新INI文件函数块
  1. Goto :Eof
  2. :UpdateInis
  3. Pushd "%Tmp%"
  4. (For %%a in (
  5. "[Version]"
  6. "Signature=$Chicago$"
  7. "[DefaultInstall]"
  8. "UpdateInis=更新INI配置文件"
  9. "[更新INI配置文件]"
  10. ) Do Echo %%~a)>.\INF.TMP
  11. Echo "%~1","%~2",%~3 >>.\INF.TMP
  12. RUNDLL32 SETUPAPI.DLL,InstallHinfSection ^
  13. DefaultInstall 128 .\INF.TMP
  14. Del /F .\INF.TMP 2>nul
  15. Popd
复制代码
——————————————————————————————
获取回车符:
  1. setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (
  3. 'ipconfig^|findstr /i "Address"'
  4. ) do set CarriageReturn=%%a
  5. set CarriageReturn=!CarriageReturn:~-1!
复制代码
获取换行符:
  1. set LineFeed=^
  2. %空行001%
  3. %空行002%
复制代码
注:必须要有两个空行用作转义
另:请使用!Var!形式调用,使用%var%或Call+%%var%%会使回车符丢失,
                换行符忽略后面的字符串。
——————————————————————————————
  1. certutil -decodehex hex.txt bin.txt
复制代码
::Hex2Bin
  1. certutil -encode bin.txt Encode.txt
复制代码
::Base64_Encode
  1. certutil -decode Encode.txt Decode.txt
复制代码
::Base64_Decode
——————————————————————————————
检测第三方是否存在/可用
  1. Set 第三方名称=PrintANSI
  2. For %%a in (%第三方名称%.exe) Do ^
  3. If "%%~$PATH:a" EQU "" ^
  4. If Not Exist .\%第三方名称%.exe ^
  5. Echo 第三方丢失。
复制代码
——————————————————————————————
批处理调用VBS创建快捷方式>>(Desktop为桌面)
  1. 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:
  1. RunDll32 advpack.dll,LaunchINFSection INF文件路径.INF,DefaultInstall
复制代码
  1. RUNDLL32 SETUPAPI.DLL,InstallHinfSection DefaultInstall 128 INF文件路径.INF
复制代码
rundll用法:rundll32 <DLL文件名>,<入口点>,<调用参数>
注:RUNDLL的对入口点大小写敏感!

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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2