怎么用php做网站,1688网站可以自己做吗,笔记本做网站外网访问,网站网格设计DOS 批处理 1. 基础 DOS 命令1.1 基础命令1.2 文件系统操作1.3 文件夹管理1.4 文件管理1.5 网络相关1.6 系统管理1.7 IF、FOR和NETIFFORNET 1. 基础 DOS 命令
command /? 查找帮助DOS命令不区分命令字母的大小写
C:\Users\Administratorecho 1
1
C:\Users\Administrator… DOS 批处理 1. 基础 DOS 命令1.1 基础命令1.2 文件系统操作1.3 文件夹管理1.4 文件管理1.5 网络相关1.6 系统管理1.7 IF、FOR和NETIFFORNET 1. 基础 DOS 命令
command /? 查找帮助DOS命令不区分命令字母的大小写
C:\Users\Administratorecho 1
1
C:\Users\AdministratorechO 1
1
C:\Users\AdministratorEchO 1脚本正常执行结束返回值为0异常结束返回值为1或其它数字
1.1 基础命令
REM 和 ::
ECHO 和
PAUSE
ERRORLEVEL
TITLE
COLOR
GOTO 和 :
FIND
START
assoc 和 ftype
pushd 和 popd
CALL
SHIFT
IF
setlocal 与 变量延迟
cls
FORREM 和 ::指令有点类似我们C语言的注释但是有点不同。 REM注释的描述会在执行bat脚本的时候将描述回显出来::注释的描述在指令bat脚本时不会将描述回显。 d:\test_battype rem.bat
rem rem line
:: ::line
pause
d:\test_batrem.batd:\test_batrem rem lined:\test_batpause
请按任意键继续. . .ECHO除了可以打印我们想输出的文字或者变量值的功能之外还有一些小功能。 echo [on/off]打开/关闭回显功能
echo [context]输出提示信息
echo off关闭DOS提示符的显示使屏幕只留下一个下划线形状的光标再输入echo on即可打开DOS提示符的显示
echo.输出一个空行这里的.和echo之间不要有空格其实除了echo.有这个效果echo、echo-、echo*、echo,都可以
echo [文件内容] [文件名]建立新文件
echo [文件内容] [文件名]新增文件内容echo前面加与否。 作用加代表不显示当前行命令自身 示例 G:\WorkSpaceG\yurq\dostype echo.bat
rem echo off指令关闭回显
echo off
echo 关闭回显功能的效果
echo 床前明月光,
echo 疑是地上霜,
echo on
echo 打开回显功能的效果
echo 举头望明月,
echo 低头思故乡.
echo ---------------分割线-------------
echo 建立新文件
:: 在当前路径下新建文件
echo hello ./new_file.txt
echo 继续增加文件内容请按enterpause nul
echo 新增文件内容
echo world ./new_file.txt
pauseG:\WorkSpaceG\yurq\dosecho.batG:\WorkSpaceG\yurq\dosrem echo off指令关闭回显G:\WorkSpaceG\yurq\dosecho off
关闭回显功能的效果
床前明月光,
疑是地上霜,G:\WorkSpaceG\yurq\dosecho 打开回显功能的效果
打开回显功能的效果G:\WorkSpaceG\yurq\dosecho 举头望明月,
举头望明月,G:\WorkSpaceG\yurq\dosecho 低头思故乡.
低头思故乡.G:\WorkSpaceG\yurq\dosecho ---------------分割线-------------
---------------分割线-------------G:\WorkSpaceG\yurq\dosecho 建立新文件
建立新文件G:\WorkSpaceG\yurq\dosecho hello 1./new_file.txtG:\WorkSpaceG\yurq\dosecho 继续增加文件内容请按enter pause 1nul
继续增加文件内容请按enterG:\WorkSpaceG\yurq\dosecho 新增文件内容
新增文件内容G:\WorkSpaceG\yurq\dosecho world 1./new_file.txtG:\WorkSpaceG\yurq\dospause
请按任意键继续. . .G:\WorkSpaceG\yurq\dostype new_file.txt
hello
world ERRORLEVEL ERRORLEVEL指令含义是“程序状态返回码”返回上一条指令执行状态码一般0代表正常1或者其它数字代表错误 TITLE TITLE指令修改控制台窗口的标题 color 设置默认的控制台前景和背景颜色。 COLOR [attr]attr 指定控制台输出的颜色属性。颜色属性由两个十六进制数字指定 – 第一个对应于背景第二个对应于前景。每个数字可以为以下任何值: 0 黑色 8 灰色1 蓝色 9 淡蓝色2 绿色 A 淡绿色3 浅绿色 B 淡浅绿色4 红色 C 淡红色5 紫色 D 淡紫色6 黄色 E 淡黄色7 白色 F 亮白色GOTO 和 : GOTO 和 :指令含义就是跳转的意思那GOTO跳转到哪里去呢这里的GOTO是跳转到标签处这里的标签就是用:来定义标签格式:[name]给标签取名最好取一些有含义的名字 D:\test_battype goto.bat
echo off
:start
set /a var 1
echo var%var%
if %var% leq 4 goto start
pauseD:\test_batgoto.bat
var1
var2
var3
var4
var5
请按任意键继续. . .FIND FIND指令在文件中搜索字符串 FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] string [[drive:][path]filename[ ...]]/V 显示所有未包含指定字符串的行。/C 仅显示包含字符串行的次数。/N 显示行号。/I 搜索字符串时忽略大小写。/OFF[LINE]不要跳过具有脱机属性集的文件。string指定要搜索的文本字符串。[drive:][path]filename指定要搜索的文件G:\WorkSpaceG\yurq\dostype echo.bat
echo off
echo temp.txt文件内容
type .\temp.txt
echo.
echo 显示所有未包含指定字符串的行
find /v 床 .\temp.txt
echo ------------分割线--------------
echo 仅显示包含字符串的行数
find /c 床 .\temp.txt
echo ------------分割线--------------
echo 显示行号
find /n 低头 .\temp.txt
echo ------------分割线--------------
echo 搜索字符串时忽略大小写
find /i hello world .\temp.txt
pauseG:\WorkSpaceG\yurq\dosecho.bat
temp.txt文件内容
床前明月光,
疑是地上霜,
举头望明月,
低头思故乡.
HELLO WORLD
hello worLD
显示所有未包含指定字符串的行---------- .\TEMP.TXT
疑是地上霜,
举头望明月,
低头思故乡.
HELLO WORLD
hello worLD
------------分割线--------------
仅显示包含字符串的行数---------- .\TEMP.TXT: 1
------------分割线--------------
显示行号---------- .\TEMP.TXT
[4]低头思故乡.
------------分割线--------------
搜索字符串时忽略大小写---------- .\TEMP.TXT
HELLO WORLD
hello worLD
请按任意键继续. . .start START指令 不带参数批处理中调用外部程序命令该外部程序在新的窗口中运行批处理程序继续往下执行不理会外部程序执行的情况。使用wait参数则必须等待外部程序完成后输入n才可以继续执行剩余的指令输入y终止当前批处理后面的程序 echo off
echo start
:: start .\title.batecho n|start /wait .\title.bat echo endD:\test_batstart.batD:\test_batecho off
start
^Cendassoc 和 ftype assoc指令显示或设置“文件扩展名”关联到“文件类型”比如.txt文件扩展名代表的是文本文件执行“assoc .txt”指令即可看到输出内容是“.txttxtfile”及说明.txt文件扩展名代表着文本文件再比如“assoc .doc”指令输出内容是“.docWord.Document.8”及说明.doc文件扩展名代表着文档文件ftype指令显示或设置“文件类型”关联到“执行程序与参数” D:\test_batassoc .xlsx
.xlsxExcel.Sheet.12D:\test_batassoc .txt
.txttxtfileD:\test_batassoc .doc
.docWord.Document.8D:\test_batftype txtfile
txtfile%SystemRoot%\system32\NOTEPAD.EXE %1pushd 和 popd pushd 和 popd指令切换保存的目录 d:\test_batpushd d:\test_batd:\test_batcd /d c:\c:\popdd:\test_batCALL CALL指令可以在批处理执行过程中调用另外一个批处理程序当另外一个批处理程序执行完后再继续执行原本的命令。 格式CALL [drive:][path]filename [batch-parameters] call与start不同的是call不会另外调用一个新的控制台窗口来执行调用的批处理脚本 echo off
echo 调用修改控制台标题脚本
call .\example_title.bat
echo 调用程序执行完毕
pause也可以调用自身脚本中的命令段相当于调用子程序但是被调用的命令段以标签开始以“goto :eof”结束 格式CALL:label arguments echo off
echo 这里是第一句话
call :sub_1
echo 这里是第三句话
echo 这里是第四句话
echo 这里是第五句话
pause:: --------子程序--------
:sub_1
echo 这里是第二句话
goto :eofG:\WorkSpaceG\yurq\dosecho.bat
这里是第一句话
这里是第二句话
这里是第三句话
这里是第四句话
这里是第五句话
请按任意键继续. . .
这里是第二句话还是会额外执行子程序的内容 SHIFT SHIFT指令更改批处理文件中可替换参数的位置更改参数位置并不会影响%0和%1。格式SHIFT [/n] G:\WorkSpaceG\yurq\dostype echo.bat
echo off
::在当前工作目录下创建一个临时文件
echo 这是一个临时文件 temp.txt
call :sub 1 2 3 4 5 6 7 8
pause:sub
echo 第二位参数的值%~2
rem 向左移动一位
shift /1
echo 第二位参数的值%~2
goto :eofG:\WorkSpaceG\yurq\dosecho.bat
第二位参数的值2
第二位参数的值3
请按任意键继续. . .
第二位参数的值
第二位参数的值setlocal 与 变量延迟 批处理读取命令是按行读取在处理之前要完成必要的预处理工作这其中就包括对命令中变量复赋值。我们看个例子来理解变量延迟 d:\test_battype start.bat
echo off
set a4
set a5 echo %a%
paused:\test_batstart.bat
4
请按任意键继续. . .这里我们可以看到输出的结果是4这是为什么呢前面不是说了吗批处理读取命令是按行读取在处理之前要完成必要的预处理工作这其中就包括对命令中变量复赋值a被我赋值了4我们下一行不是给a赋值了5吗为什么不是5呢“set a5 echo %a%”的意思是我们打印a的值时与给a赋值5的命令是同时执行的正因为是同时执行的所以批处理无法感知变量的动态变化。为了感知动态变化批处理设计了变量延迟简单来说在读取一条完整的语句之后不立即对该行的变量赋值而会在某个单条语句执行之前再进行赋值也就是说”延迟“了对变量的赋值。对示例1开启变量延迟 d:\test_battype start.bat
echo off
setlocal enabledelayedexpansion
set a4
set a5 echo !a!
paused:\test_batstart.bat
5
请按任意键继续. . .变量延迟的启动语句是”setlocal enabledelayedexpansion“并且变量要用一对”!!“将变量括起来否则就没有变量延迟的效果 为什么要用变量延迟? d:\test_battype start.bat
echo off
::setlocal enabledelayedexpansion
for /l %%i in (1, 1, 5) do (set a%%iecho %a%
)
paused:\test_batstart.bat
5
5
5
5
5
请按任意键继续. . .d:\test_battype start.bat
echo off
setlocal enabledelayedexpansion
for /l %%i in (1, 1, 5) do (set a%%iecho !a!
)
paused:\test_batstart.bat
1
2
3
4
5
请按任意键继续. . .1.2 文件系统操作 vol 显示磁盘卷标号label 创建更改或删除磁盘的卷标更改卷标
C:\Users\Administratorcd /d d:/d:\label soft1.3 文件夹管理 cdmd/mkdirrd/rmdirdirtreepath 显示path的环境变量值XCOPY source [destination] 复制文件和目录树1.4 文件管理 type 显示文件内容copy source [destination] 将一份或多份文件复制到另一个位置del/erasemoveren/renamereplace 替换文件attrib 显示或更改文件属性find 在文件中搜索字符串fc 比较两个文件或两个文件集并显示它们之间的不同# replace 如果目标目录没有此文件不进行替换
d:\replace d:\1\123 d:\2
正在替换 D:\2\123# attrib
d:\attrib /?
显示或更改文件属性。ATTRIB [R | -R] [A | -A] [S | -S] [H | -H] [O | -O] [I | -I] [X | -X] [P | -P] [U | -U][drive:][path][filename] [/S [/D]] [/L] 设置属性。- 清除属性。R 只读文件属性。A 存档文件属性。S 系统文件属性。H 隐藏文件属性。# find
d:\find 123 123---------- 123
123# fc
d:\fc 123 d:\1\123
正在比较文件 123 和 D:\1\123
FC: 找不到差异1.5 网络相关 pingftp 将文件传送到运行 FTP 服务器服务(经常称为后台程序)的计算机以及将文件从该计算机传出。可以交互使用 Ftpnet 网络相关telnet 检测服务器的端口是否开放telnet www.baidu.com 80ipconfigmsg 将消息发送给用户arp 显示和修改地址解析协议(ARP)使用的“IP 到物理”地址转换表arp是地址解析协议其基本功能为透过目标设备的IP地址查询目标设备的MAC地址以保证通信的顺利进行。它是IPv4中网络层必不可少的协议不过在IPv6中已不再适用并被邻居发现协议NDP所替代。nslookup 查询域名对应的IP地址tracert ip/域名 路由追踪命令# ftp
FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-A] [-x:sendbuffer] [-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [host]-v 禁止显示远程服务器响应。-n 禁止在初始连接时自动登录。-i 关闭多文件传输过程中的交互式提示。-d 启用调试。-g 禁用文件名通配(请参阅 GLOB 命令)。-s:filename 指定包含 FTP 命令的文本文件命令在 FTP 启动后自动运行。-a 在绑字数据连接时使用所有本地接口。-A 匿名登录。-x:send sockbuf 覆盖默认的 SO_SNDBUF 大小 8192。-r:recv sockbuf 覆盖默认的 SO_RCVBUF 大小 8192。-b:async count 覆盖默认的异步计数 3-w:windowsize 覆盖默认的传输缓冲区大小 65535。host 指定主机名称或要连接到的远程主机的 IP 地址。
1.6 系统管理 schtasksshutdowntskilltaskkilltasklistscregpowercfg1.7 IF、FOR和NET
由于这几个命令比较常用且复杂所以单独整理这几个命令之间没有必然联系。
IF
执行批处理程序中的条件处理。
IF [NOT] ERRORLEVEL number command
IF [NOT] string1string2 command
IF [NOT] EXIST filename commandNOT 指定只有条件为 false 的情况下Windows 才应该执行该命令。ERRORLEVEL number 如果最后运行的程序返回一个等于或大于指定数字的退出代码指定条件为 true。string1string2 如果指定的文字字符串匹配指定条件为 true。EXIST filename 如果指定的文件名存在指定条件为 true。command 如果符合条件指定要执行的命令。如果指定的条件为 FALSE命令后可跟 ELSE 命令该命令将在 ELSE 关键字之后执行该命令。ELSE 子句必须出现在同一行上的 IF 之后。例如: IF EXIST filename. (del filename.) ELSE (echo filename. missing.)由于 del 命令需要用新的一行终止因此以下子句不会有效:
IF EXIST filename. del filename. ELSE echo filename. missing由于 ELSE 命令必须与 IF 命令的尾端在同一行上以下子句也不会有效: IF EXIST filename. del filename.ELSE echo filename. missing如果都放在同一行上以下子句有效: IF EXIST filename. (del filename.) ELSE echo filename. missingd:\test_batif 1 leq 1 echo 123
123d:\test_batif errorlevel 0 echo 321
321d:\test_batif exist start.bat echo exist
exist如果命令扩展被启用IF 会如下改变: IF [/I] string1 compare-op string2 commandIF CMDEXTVERSION number commandIF DEFINED variable command其中 compare-op 可以是: EQU - 等于NEQ - 不等于LSS - 小于LEQ - 小于或等于GTR - 大于GEQ - 大于或等于而/I开关(如果指定)说明要进行的字符串比较不分大小写。/I 开关可以用于 IF 的 string1string2 的形式上。这些比较都是通用的原因是如果 string1 和 string2 都是由数字组成的字符串会被转换成数字进行数字比较。
CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样除了它是在跟与命令扩展有关联的内部版本号比较。第一个版本是 1。每次对命令扩展有相当大的增强时版本号会增加一个。命令扩展被停用时CMDEXTVERSION 条件不是真的。
如果已定义环境变量DEFINED 条件的作用跟 EXIST 的一样除了它取得一个环境变量返回的结果是 true。
如果没有名为 ERRORLEVEL 的环境变量%ERRORLEVEL%会扩充为 ERROLEVEL 当前数值的字符串表达式否则你会得到其数值。运行程序后以下语句说明 ERRORLEVEL 的用法: goto answer%ERRORLEVEL%:answer0echo Program had return code 0:answer1echo Program had return code 1你也可以使用以上的数字比较: IF %ERRORLEVEL% LEQ 1 goto okay如果没有名为 CMDCMDLINE 的环境变量%CMDCMDLINE%将在 CMD.EXE 进行任何处理前扩充为传递给 CMD.EXE 的原始命令行否则你会得到其数值。
如果没有名为 CMDEXTVERSION 的环境变量%CMDEXTVERSION% 会扩充为 CMDEXTVERSION 当前数值的字串符表达式否则你会得到其数值。 其实笔者整理这篇文章就是因为if 1 echo 1报错现在看来确实是语法错误 FOR
对一组文件中的每一个文件执行某个特定命令。
基本格式
FOR %variable IN (set) DO command [command-parameters]%variable 指定一个单一字母可替换的参数。(set) 指定一个或一组文件。可以使用通配符。command 指定对每个文件执行的命令。command-parameters为特定命令指定参数或命令行开关。在批处理程序中使用 FOR 命令时指定变量请使用 %%variable而不要用 %variable。变量名称是区分大小写的所以 %i 不同于 %I.FOR命令有4个参数“/D、/L、/R、/F”
FOR参数
1 参数 /D详解
定义FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配符则指定与目录名匹配而不与文件名匹配
解析如果集合set包含通配符“*”和“?”将对与集合set相匹配的每一个目录不是指目录中的文件组执行指定的Commoand这个参数主要用于目录搜索不会搜索文件 D可以理解为Directory G:\WorkSpaceG\yurq\dostype echo.bat
echo off
echo C盘根目录下所有目录名
for /d %%i in (c:\*) do (echo %%i
)
pause
G:\WorkSpaceG\yurq\dosecho.bat
C盘根目录下所有目录名
c:\Intel
c:\PerfLogs
c:\Program Files
c:\Program Files (x86)
c:\Python27
c:\Temp
c:\Users
c:\Windows
请按任意键继续. . .G:\WorkSpaceG\yurq\dostype echo.bat
echo off
echo 当前目录下所有目录名
for /d %%i in (%~dp0*) do (echo %%i
)
pause
G:\WorkSpaceG\yurq\dosecho.bat
当前目录下所有目录名
G:\WorkSpaceG\yurq\dos\123
请按任意键继续. . .2 参数 /R详解
定义FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
检查以 [drive:]path 为根的目录树指向每个目录中的 FOR 语句。
如果在 /R 后没有指定目录规范则使用当前目录。如果集仅为一个单点(.)字符则枚举该目录树
解析通过/D参数知道/D参数能显示指定路径或者当前路径下的目录名/R也是跟目录有关/R参数可以把指定路径下或者当前目录下的文件名全部读取注意是文件名不是目录名 注意 1、集合set中文件名如果包含通配符“*”和“?”则列举/R参数指定的目录及其下面的所有子目录中与集合set相符合的所有文件不相符文件的目录则不列举 2、如果集合set中为具体文件名不包含通配符则枚举该目录树即枚举该目录及其下面的所有子目录而不管集合set中指定文件是否存在。这与前面所说的单点.枚举目录树是一个道理单点代表当前目录也可视为一个文件 G:\WorkSpaceG\yurq\dostype echo.bat
echo off
echo 搜索D盘根目录和子目录子所有以.bat结尾的文件
for /r c:\ %%i in (*.bat) do (echo %%i
)
echo --------------------------------------------
echo 搜索当前目录及其子目录下所有以.txt结尾的文件
for /r %%i in (*.txt) do (echo %%i
)
pause
G:\WorkSpaceG\yurq\dosecho.bat
搜索C盘根目录和子目录子所有以.bat结尾的文件
c:\$WINDOWS.~BT\NewOS\Program Files\WindowsPowerShell\Modules\Pester\3.4.0\Build.bat
c:\$WINDOWS.~BT\NewOS\Program Files\WindowsPowerShell\Modules\Pester\3.4.0\bin\Pester.bat
c:\$WINDOWS.~BT\NewOS\Program Files (x86)\Microsoft\Edge\Application\92.0.902.67\show_third_party_software_licenses.bat
...echo off
echo 在C盘中搜索具体文件名为“temp.png”
for /r c:\ %%i in (temp.png) do (echo %%i
)
pause备注如果集合set中为具体文件名不包含通配符则枚举该目录树即枚举该目录及其下面的所有子目录而不管集合set中指定文件是否存在。什么意思呢就是它会搜索C盘中一切可能有“temp.png”文件的路径不管“temp.png”存在都会给出一个路径结果 扩展你可以将上方脚本修改为下面这种看是否真的存在
G:\WorkSpaceG\yurq\dosecho.bat
在C盘中搜索具体文件名为“temp.png”
请按任意键继续. . .G:\WorkSpaceG\yurq\dostype echo.bat
echo off
echo 在C盘中搜索具体文件名为“temp.png”
for /r c:\ %%i in (temp.png) do (if exist %%i echo %%i
)
pause3 参数 /L详解
定义FOR /L %variable IN (start,step,end) DO command [command-parameters]
该集表示以增量形式从开始到结束的一个数字序列。因此(1,1,5)将产生序列1 2 3 4 5(5,-1,1)将产生序列(5 4 3 2 1)
解析使用迭代变量设置起始值start然后逐步执行一组范围值直到该值超过所设置的终止值end。/L参数将通过对起始值与终止值进行比较来执行迭代变量如果起始值小于终止值就会执行指定给出的命令如果迭代变量超过终止值则命令解释程序退出循环。可以使用负的步进值step以递减数值的方式来逐步执行此范围内的值
G:\WorkSpaceG\yurq\dostype echo.bat
echo off
echo 正的步进值step循环结果
for /l %%i in (1, 1, 5) do (echo %%i
)
echo --------------------------------------------
echo 负的步进值step循环结果
for /l %%i in (5, -1, 1) do (echo %%i
)
pause
G:\WorkSpaceG\yurq\dosecho.bat
正的步进值step循环结果
1
2
3
4
5
--------------------------------------------
负的步进值step循环结果
5
4
3
2
1
请按任意键继续. . .这个参数的for用起来和其他编程语言的for含义相似 4 参数 /F详解 定义
FOR /F [options] %variable IN (file-set) DO command [command-parameters]FOR /F [options] %variable IN (string) DO command [command-parameters]FOR /F [options] %variable IN (command) DO command [command-parameters]或者如果有 usebackq 选项:
FOR /F [usebackq options] %variable IN (file-set) DO command [command-parameters]FOR /F [usebackq options] %variable IN (string) DO command [command-parameters]FOR /F [usebackq options] %variable IN (command) DO command [command-parameters]file-set 为一个或多个文件名。继续到 file-set 中的下一个文件之前每份文件都被打开、读取并经过处理。处理包括读取文件将其分成一行行的文字然后将每行解析成零或更多的符号。然后用已找到的符号字符串变量值调用 For 循环。以默认方式/F 通过每个文件的每一行中分开的第一个空白符号。跳过空白行。你可通过指定可选 “options” 参数替代默认解析操作。这个带引号的字符串包括一个或多个指定不同解析选项的关键字。这些关键字为:
eolc - 指一个行注释字符的结尾(就一个)skipn - 指在文件开始时忽略的行数。delimsxxx - 指分隔符集。这个替换了空格和制表符的默认分隔符集。tokensx,y 或 m-n - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。m-n格式为一个范围。通过 nth 符号指定 mth。如果符号字符串中的最后一个字符星号那么额外的变量将在最后一个符号解析之后usebackq - 指定新语法已在下类情况中使用:在作为命令执行一个后引号的字符串并且一个单引号字符为文字字符串命令并允许在 file-set中使用双引号扩起文件名称。注意tokens 一行指定最多 26 个符号只要不试图声明一个高于字母 “z” 或Z 的变量。请记住FOR 变量是单一字母、分大小写和全局的变量而且不能同时使用超过 52 个 G:\WorkSpaceG\yurq\dostype echo.bat
echo off
rem 创建测试文件
echo ;注释行临时文件用完删除 .\test.txt
echo 11段 12段 13段 14段 15段 16段 .\test.txt
echo 21段,22段,23段,24段,25段,26段 .\test.txt
echo 31段-32段-33段-34段-35段-36段 .\test.txt
echo 第一句话 .\temp.txt
echo 第二句话 .\temp.txt
echo 第三句话 .\temp.txt
echo hello;world .\temp.txt
echo -------------------------------------------------------------
echo /F参数解析文件内容
for /f eol; tokens1,3* delims,- %%i in (.\test.txt) do (echo %%i %%j %%k
)
echo -------------------------------------------------------------
echo /F参数解析字符串
for /f tokens1,2,3 delims,-; %%i in (hello,world-window;bat) do (echo 第一列字符串%%i第二列字符串%%j第三列字符串%%k
)
echo -------------------------------------------------------------
echo temp.txt文件内容
type .\temp.txt
echo -------------------------------------------------------------
echo /F参数解析命令
rem 结果输出只显示最左侧的“hello”因为tokens没有设置所以只显示第一列
for /f skip3 delims; %%i in (type .\temp.txt) do (echo %%i
)
pause
del .\test.txt del .\temp.txt
G:\WorkSpaceG\yurq\dosecho.bat
-------------------------------------------------------------
/F参数解析文件内容
11段 13段 14段 15段 16段
21段 23段 24段,25段,26段
31段 33段 34段-35段-36段
-------------------------------------------------------------
/F参数解析字符串
第一列字符串hello第二列字符串world第三列字符串window
-------------------------------------------------------------
temp.txt文件内容
第一句话
第二句话
第三句话
hello;world
-------------------------------------------------------------
/F参数解析命令
hello
请按任意键继续. . .解析 “eolc”指定单个字符作为注释行的开头 “skipn”指定忽略前n行 “delimsxxx”指定分隔符将内容按照指定分隔符进行分割 “tokensx,y,m-n”指定分割后的内容将按照“xym-n”列显示内容比如“tokens1,2,3”显示分割后的第一列、第二列、第三列内容而“tokens1,3*”显示分割后的第一列、第三列、第三列后的内容当作一列内容
“usebackq options” 对于带有空格的文件名你需要用双引号将文件名括起来。为了用这种方式来使用双引号还需要使用 usebackq 选项否则双引号会被理解成是用作定义某个要分析的字符串。 即被双引号括起来的字符串此选项都认为是文件名 单引号括起来为“字符串” G:\WorkSpaceG\yurq\dostype echo.bat
echo off
rem 创建测试文件
echo ;注释行临时文件用完删除 .\test.txt
echo 11段 12段 13段 14段 15段 16段 .\test.txt
echo 21段,22段,23段,24段,25段,26段 .\test.txt
echo 31段-32段-33段-34段-35段-36段 .\test.txt
echo 第一句话 .\temp.txt
echo 第二句话 .\temp.txt
echo 第三句话 .\temp.txt
echo hello;world .\temp.txt
echo -------------------------------------------------------------
echo /F参数解析文件内容
for /f usebackq eol; tokens1,3* delims,- %%i in (.\test.txt) do (echo %%i %%j %%k
)
echo -------------------------------------------------------------
echo /F参数解析字符串
for /f usebackq tokens1,2,3 delims,-; %%i in (hello,world-window;bat) do (echo 第一列字符串%%i第二列字符串%%j第三列字符串%%k
)
echo -------------------------------------------------------------
echo temp.txt文件内容
type .\temp.txt
echo -------------------------------------------------------------
echo /F参数解析命令
for /f usebackq skip3 delims; %%i in (type .\temp.txt) do (echo %%i
)
pause
del .\test.txt del .\temp.txt
G:\WorkSpaceG\yurq\dosecho.bat
-------------------------------------------------------------
/F参数解析文件内容
11段 13段 14段 15段 16段
21段 23段 24段,25段,26段
31段 33段 34段-35段-36段
-------------------------------------------------------------
/F参数解析字符串
第一列字符串hello world第二列字符串window bat第三列字符串
-------------------------------------------------------------
temp.txt文件内容
第一句话
第二句话
第三句话
hello;world
-------------------------------------------------------------
/F参数解析命令
hello
请按任意键继续. . .FOR命令中的变量
变量(I)说明%~I删除任何引号()扩展 %I删除引号规则为无头不删有头连尾删%~fI将 %I 扩展到一个完全合格的路径名%~dI仅将 %I 扩展到一个驱动器号%~pI仅将 %I 扩展到一个路径%~nI 仅将 %I 扩展到一个文件名%~xI仅将 %I 扩展到一个文件扩展名%~sI扩展的路径只含有短名%~aI将 %I 扩展到文件的文件属性%~tI将 %I 扩展到文件的日期/时间%~zI 将 %I 扩展到文件的大小%~$PATH:I查找列在路径环境变量的目录并将 %I 扩展到找到的第一个完全合格的名称。如果环境变量名未被定义或者没有找到文件此组合键会扩展到空字符串
另外还可以组合修饰符来得到多重结果:
变量(I)说明%~dpI仅将 %I 扩展到一个驱动器号和路径%~nxI仅将 %I 扩展到一个文件名和扩展名%~fsI仅将 %I 扩展到一个带有短名的完整路径名%~dp$PATH:I搜索列在路径环境变量的目录并将 %I 扩展到找到的第一个驱动器号和路径。%~ftzaI将 %I 扩展到类似输出线路的 DIR
NET
显示所有用户账号net user 添加用户账户net user username /add 删除指定用户账户net user username /delete 激活或禁用指定账户net user username /active:yes/no 查询账户相关的安全信息net accounts
查询共享资源net view、net file、net share
局域网内共享的计算机——net view查询远端计算机正在占用的共享文件——net file查询、管理共享文件夹——net share例如 我要设置e盘为共享文件夹可以执行命令【net share ee:\】其中第一个e代表了共享文件夹的名称而e:\代表的是共享文件夹的目录路径。删除共享文件夹的设定【net share D:\D-desktop\test5 /delete】
服务管理net start、net stop、Net Pause、Net Continue
查询已经开启了哪些服务——net start执行没有参数的命令【net start】可以查看当前已经开启的服务。这些服务也可在服务管理器查看在运行窗口或cmd窗口中执行命令【services.msc】可以看到所有服务。暂停某项服务——net stop xxx假如说我们想暂停上面的第一项服务可以执行命令【net stop ABBYY FineReader 15 Licensing Service】成功暂停。启动某项服务——net start xxx当我们想要启动那个被我们终止的ABBYY服务时可以用命令【net start ABBYY FineReader 15 Licensing Service】。
账号信息net user、net localgroup
net user命令用于添加或更改用于账号或显示用户账号信息。此命令也可以写为“net users”格式【net user[username [password | *] [options] ] [/domain]】username 用于添加、删除、更改或查看用户的账号名C:\Users\Administratornet user gtt gtt123 /add
命令成功完成。
C:\Users\Administratornet user gtt /delete
命令成功完成。net localgroup此命令和net user命令配合使用用于添加用户提升用户为管理员。 在渗透测试中提权是要掌握的基本知识。【net localgroup groupname {/add [/comment:text] | /delete} [/domain]】
计算机连接情况net use “Net USE”命令用于查看连接的计算机断开计算机与共享资源的连接或者显示计算机的连接信息【net use [devicename | *] [ computernamesharename[volume]] [password | *]] [/user :[domainname] username] [[/delete] | [/persistent:{yes | no}]]】
“devicename”用于指定要连接的资源名称或要断开的设备名称。
“computernamesharename” 表示服务器及共享资源的名称。
password” 表示访问共享资源的密码。
“/user”用于指定进行连接的另外一个用户。
*domainname” 用于指定另一个域。
username ”用于指定登录的用户名。
“/home”用于将用户连接到其宿主目录。
“/delete用于取消指定的网络连接。
“/persistent用于控制永久网络连接的使用。net use * /delete /Y
net use gtt gtt123 /user:\\192.168.2.151\abc同步时间 net time此命令用于查看系统时间使计算机的时钟与另一台计算机或域的时钟同步命令格式如下。
net time [computername | /domain [:name]] [/set]“computername” 表示要检查或同步的服务器名。 “/domain[:name]”用于指定要与其时间同步的域。 “/set用于使本计算机时钟与指定计算机或域的时钟同步。
会话管理 net session 命令用于列出或断开本地计算机与之连接的客户端的会话也可写为 net sessions 或 net sess 命令格式 net session [computername] [/delete]