一些批处理笔记

作者: admin 分类: 渗透 发布时间: 2017-01-06 00:04

1、延时的三种方法:

TIMEOUT /T 10 2>nul
choice /t 10 /d y /n
ping -n 10 127.0.0.1 >nul

推荐用 timeout 命令更省资源更精确,win2k3及以上自带该命令,xp及以下版本不带该命令
choice win7 (win2008)及以上支持
ping 命令支持所有系统 但不精确

2、常用符号

1.管道命令:|
将第一条命令的结果作为第二条命令的参数来使用,在unix中这种方式很常见。格式:第一条命令 | 第二条命令 [| 第三条命令...]。

例如:

dir c:\|find "txt" 命令是查找C:\所有,并发现TXT字符串。

echo y|format a: /s /q /v:system  用过format的都知道,再格盘时要输入y来确认是否格盘,这个命令前加上echo y并用|字符来将echo y的结果传给format命令从而达到自动输入y的目的。

2.逻辑组合命令:&,&&,||

组合命令就是可以把多个命令组合起来当一个命令来执行。这在批处理脚本里是允许的,而且用的非常广泛。因为批处理认行不认命令数目。

&:它的作用是用来连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败;

&&:当&&前面的命令成功执行时,执行&&后面的命令,否则不执行,即碰到执行出错的命令后将不执行后面的命令;

||:当||前面的命令失败时,执行||后面的命令,否则不执行,即碰到执行正确的命令后将不执行后面的命令。

注意:组合命令和重定向命令一起使用必须注意优先级;管道命令的优先级高于重定向命令,重定向命令的优先级高于组合命令。对比:dir c:\ & dir d:\ > a.txt,dir c:\ > a.txt & dir d:\ >> a.txt 和dir c:\ > a.txt dir d:\ >> a.txt 

3. , 逗号

逗号相当于空格,在某些情况下","可以用来当做空格使

比如:dir,c:\

4. ; 分号

分号,当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回错误报告,但程序仍会执行。

比如:dir c:\;d:\;e:\;z:\

以上命令相当于

dir c:\

dir d:\

dir e:\

dir f:\


如果其中z盘不存在,运行显示:系统找不到指定的路径。然后终止命令的执行。

例:dir c:\;d:\;e:\1.txt

以上命令相当于

dir c:\

dir d:\

dir e:\1.txt

其中文件e:\1.txt不存在,但e盘存在,有错误提示,但命令仍会执行。如果目标路径不存在,则终止执行;如果路径存在,仅文件不存在,则继续执行。

3、是否支持powershell

if defined PSModulePath (echo 支持powershell) else (echo 不支持powershell)

4、当前用户桌面目录

@echo off
for /f "tokens=3*" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v Desktop ^|Findstr "REG_"') do set desktop= %%i%%j\

5、u盘相关
获取卷标为 FireGoose 的u盘盘符

@echo off
for /f "tokens=1,2 delims== skip=2 usebackq" %%i in (`wmic logicaldisk where volumename^='GSP1RMCULXF' get DeviceID /value`) do if (%%j) NEQ () echo %%j

方法二:

for /F %%A in ('wmic volume get driveletter^,label ^| find /i \"FireGoose\"') do (set Fire=%%A)");

有效的u盘

wmic logicaldisk where "((DriveType=2 and ( size is not null)))" get DeviceID

排除某个u盘

wmic logicaldisk where "volumename !='GSP1RMCULXF' and DriveType=2 and size is not null"  get DeviceID

6、批量重命名

for /r %i in (qun_a*) do ren %~ni %~ni.txt

7、存活主机ip

for /f "tokens=1,2,3"  %i in ('for /l %s in ^(1,1,255^) do @ping 1192.168.1.%s -n 1 ^| find /i "ttl"') do @echo %k >>%tmp%\ip.zzky & for /f "tokens=1* delims=:" %i in (%tmp%\ip.zzky) do @echo %i & del /q %tmp%\ip.zzky

9、替换字符串
将空格替换成 %20

@echo off
setlocal EnableDelayedExpansion
set aa="test 123"
set str=!aa!
set "str=!str: =%%20!" 
echo !str!

10、判断是否已管理员权限执行批处理

Md "%WinDir%\System32\test_permissions" 2>NUL||(Echo.&Echo 请使用右键“以管理员身份运行”&&Pause >NUL&&Exit)

11、特权模式执行批处理
需管理员组用户才可
使用该批处理可执行特权命令 如 添加管理员用户

@echo off
mode con lines=30 cols=60
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
:main
cls
cmd.exe

12、显示path信息

SET TempPath="%Path:;=";"%" && FOR %a IN (%TempPath%) DO @echo.%~a

13、服务详情

for /f "tokens=1,2,3,4,5 delims=," %i in ('wmic service where state^=^"running^" get name^,displayname^,pathname^,startname ^/format^:csv') do @echo %j^|%k^|%l^|%m

14、查找指定大小指定类型文件

@echo off
setlocal enabledelayedexpansion
for /f "Delims=" %%1 in ('dir /s /b c:\*.jpg') do (
  set /a "t=%%~z1/1024"
        if !t! GTR 700 echo %%1 大小:!t!.00  KB
)

15、弹框

1、mshta "javascript:var sh=new ActiveXObject( 'WScript.Shell' ); sh.Popup( 'Message!', 10, 'Title!', 64 );close()"
2、msg %username% Message
标签云