Cmd基础

Cmd基础

Cmd指令集:Github gist



1. 简介

cmd命令 分为 内部命令 和 外部命令
​ 内部命令:物理内存中可以直接调用的命令
​ 比如 ls , copy , echo …
​ 外部命令:内部命令的功能扩展,通过调用应用程序来执行结果,可扩展自定义 : 把ping重命名为ping2,可以使用ping2执行原来的ping命令
​ 扩展:如果要使用 wget 命令,可以下载并安装wget
​ 使用wget下载百度的首页:wget www.baidu.com



2. 简单命令

cd 切换目录,路径带空格需要双引号

1
2
3
4
cd C:	
cd ..
cd /
cd .

dir 列出文件夹

1
2
3
4
dir /a	all
dir /h hide
dir /r read
dir /s system

md 创建文件夹

1
md C:\hello

rd删除文件夹

1
rd C:\hello

attrib设置文件属性
​ 查看文件属性

1
attrib C:\hello.txt

+r添加只读

1
attrib +r demo.txt

-h删除隐藏

1
attrib -h demo.txt

type more打印查看文档文件(more)

1
type C:\hello.txt

copy只能复制文件

1
2
copy  C:\hello.txt  D:\  
copy C:\hello.txt C:\HELLO.txt rem改名

xcopy
/s 不能复制空目录
/e 能赋值空目录

1
xcopy /e C:\hello.txt  D:\

rename

1
2
rename hello.txt HELLO.txt	     rem文件
rename hello HELLO rem文件夹

move

1
2
move C:\demo.txt  D:\
move C:\demo.txt D:\DEMO.txt rem重命名

ren 重命名

1
ren C:\demo.txt  D:\DEMO.txt		rem重命名

replace 替换
/a add将新文件添加到目标目录(复制)
/s same递归替换目标目录与所有子目录下的同名文件
/u update更新且替换同名文件

1
replace /a C:\demo.txt  D:\

mode 宽度,高度

1
mode 80,30

color背景色字体颜色

1
color 07


3. 变量

set查看系统环境变量
​ 局部变量

1
set name=xxx

​ 打印值

1
set name

​ 删除:赋予空值

1
set name=

​ 运算

1
2
set /a 1+1
set /a 2*2

​ 接受输入/p

1
set /p var=请输入一个字符

​ 忽略大小写/i ignore

1
2
3
4
@echo off
set /p var=请输入一个数字:
echo 您输入的数字是:%var%
pause >nul

setx在用户或系统环境创建或修改环境变量。能基于参数、注册表项或文件输入设置变量。
​ 设置全局变量

1
setx PATH "%path%;C:\python\bin"

errorlevel错误变量:如果上一条命令的返回值,0表示执行成功

1
echo %errorlevel%


4. 特殊字符

|命令管道,将第一条的命令的结果作为第二条的命令的参数来使用
find查找文件或者文件夹
findstr筛选对应字符串

1
2
3
dir f:\ | find "hello"
dir f:\ | findstr "hello"
netstat -ano | findstr TCP

&组合命令,当第一条命令执行失败了,后边的命令继续执行

1
dir a:\ & dir c:\		rem 会显示A:\和C:\目录

&&组合命令,第一个命令失败后,后边的命令不会执行

1
dir a:\ && dir c:\		rem 不会显示目录

||组合命令,第一个命令失败后,才会执行第二条命令

1
dir a:\ & dir c:\		rem 会显示C:\目录

()括号

;分号

*通配符,全部字符

?通配符,单个字符

1
dir c:\???		rem打印长度为3的文件名和文件夹

@echo off 关闭回显

1
2
3
set /a var = 4*5     rem var变量
echo %var% rem %变量%
pause >nul rem 暂停,重定向到nul,去掉‘请按任意键继续’

rem注释

::注释

goto跳转:flag,类似汇编

1
2
3
4
5
6
@echo off
rem 注释部分
:part1
echo this is part1
goto part1
pause

start打开盘符、文件、文件夹、网址、程序等
/min 最大化
/max 最小化
​ 文件夹路径带空格要加双引号

1
2
3
4
5
start F:\
start /max F:\
start F:\demo.txt
start www.baidu.com
start "" "space space"

call调用,类似汇编

1
2
3
4
5
@echo off
echo this is main
call demo.bat
echo 调用完成
pause

sort排序
​ 默认按照以一个字母升序排序

1
sort demo.txt

/+n按照第n个字母排序

1
sort /+n demo.txt

/r倒序

1
sort /r demo.txt > demo1.txt

/o导出output

1
sort  demo.txt /o demo1.txt


5. 条件

if exist if not exist判断文件或者文件夹是否存在

1
2
3
@echo off
if exist C:\ (echo 存在C盘) else (echo 不存在C盘)
pause >nul

if "str1"=="str2" else 判断两个字符串是否相等

1
2
3
4
5
@echo off
set var1=hello
set var2=helle
if %var1%==%var2% (echo equal) else (echo not equal)
pause >nul

if sum1 equ sum2判断某两个数值是否相等

if defined var判断某个变量是否已经被赋值

1
2
3
@echo off
if defined var1 (echo defed) else (echo undefed)
pause >nul

判断两个数值值之间的大小关系的关系符:

判断 关系符 解释记忆
== equ equal
> gtr greeter than
>= geq gteater then or equal
< lss less than
<= leq less than or equal
!= neq not equal
1
2
3
4
5
@echo off
set /p num1=请输入数字1:
set /p num2=请输入数字2:
if %num1% equ %num2% (echo equ) else (echo not equ)
pause >nul

判断文件夹是否存在,不在则创建

1
2
3
@echo off
if exist F:\BOOM (echo 存在文件夹) else (md F:\BOOM && echo 创建成功)
pause >nul

判断文件是否存在,不存在则创建

1
2
3
@echo off
if exist E:\桌面\hello.py (echo 存在文件) else (type nul >E:\桌面\hello.py && echo 创建成功)
pause >nul

type nul >route回显重定向到文件输出



6. 循环

for %var in (set) do conmand
处于cmd dos界面:

1
2
for %i in (1 2 3 4 5) do echo %i
for %i in (a b c) do echo %i

处于.bat文件中: 变量var需要双百分号%%var

1
2
3
4
5
@echo off
for %%i in (1 2 3 4 5) do echo %%i
for %%i in (a b c) do echo %%i
for %%i in (c:\a*) do echo %%i
pause >nul

4-遍历出F盘中以a开头的文件,不是文件夹

for /l %var in (start , step , end) do conmend

1
2
3
4
5
6
@echo off
cd E:\桌面
for /l %%i in (1,2,10) do echo %%i
for /l %%i in (1,1,3) do md text%%i
for /l %%i in (1,1,3) do start www.baidu.com
pause >nul

​ 3-step参数为跳跃间隙值,同python
​ 4-批量创建文件夹text1 text3 text3
​ 5-从浏览器打开3次百度首页

for /d %var in (set) do command (directory)

1
2
3
4
@echo off
for /d %%i in (*) do echo %%i
for /d %%i in (F:\???) do echo %%i
pause >nul

​ 2-筛选出当前目录的所有文件夹:
​ 3-筛选出f盘下,命名字符长度小于等于3的文件夹匹配出的只能是目录,文件夹,不能是文件

for /r [drive:]path %var in (set) do command

1
2
3
@echo off
for /r F:\ %%i in (*.txt) do echo %%i
pause >nul

​ 匹配出F:盘下所有以.txt结尾的文件
for /f "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

1
2
3
4
5
6
7
@echo off
for /f %%i in (F:\demo.txt) do echo %%i
for /f "delims= " %%i in (F:\demo.txt) do echo %%i
for /f "delims=" %%i in(F:\demo.txt) do echo %%i
for /f "tokens=1,2 delims=" %%i in(F:\demo.txt) do echo %%i %%j
for /f "skip=1 tokens=1,2 delims=" %%i in(F:\demo.txt) do echo %%i %%j
pause >nul

​ 读取文件内容,如果不加/f,只会把文件路径打印出来
​ 2-默认以空格为每行的分隔符,读取F盘下demo.txt的内容,遇到空格认为此行结束
​ 3-以"delims=?" ,?作为每行的分隔符
​ 4-取"delims="时,以此行不再有内容认为此行结束
​ 5-"delims="按行提取文档,tokens=1,2,...并只提取出第1,2,…列的字符,注意echo接收的参数数量需要和提出的tokens数量一致
​ 6-在第5行命令的基础上增加了skip=1,指跳过第一行的读取

1
2
3
@echo off
for /f %%i in (F:\demo.txt) do md %%i
pause

​ 从F:demo.txt中按行读取内容,将每行内容按字符命名新文件夹

%0

1
2
3
@echo off
start cmd
%0

​ 死循环,无法ctrl+c取消,慎用



7. 重定向

操作符:>,>>,<

>

1
2
3
@echo off
ping www.baidu.com > f:\test.txt && type f:\test.txt
pause >nul

>>追加

1
2
3
@echo off
ping www.baidu.com >> f:\test.txt && type f:\test.txt
pause >nul

<

1
2
3
@echo off
ping www.baidu.com > f:\test.txt && sort < f:\test.txt
pause >nul

句柄的数字代码描述
​ 0:键盘输入
​ 1:输出到命令提示符窗口
​ 2:错误输出
​ 常用于错误日志捕捉

1
2
3
@echo off
di f:\ >directory.txt 2>error.txt
pause >nul

​ 故意将dir写成di,结果任会生成两个文件,错误日志保存在error.txt



8. 系统

1.ping

  • 选项:
    -t Ping 指定的主机,直到停止。若要查看统计信息并继续操作,请键入 Ctrl+Break;若要停止,请键入 Ctrl+C。
    -a 将地址解析为主机名。
    -n count 要发送的回显请求数。
    -l size 发送缓冲区大小。
    -f 在数据包中设置“不分段”标记(仅适用于 IPv4)。
    -i TTL 生存时间。
    -v TOS 服务类型(仅适用于 IPv4。该设置已被弃用,对 IP 标头中的服务类型字段没有任何影响)。
    -r count 记录计数跃点的路由(仅适用于 IPv4)。
    -s count 计数跃点的时间戳(仅适用于 IPv4)。
    -j host-list 与主机列表一起使用的松散源路由(仅适用于 IPv4)。
    -k host-list 与主机列表一起使用的严格源路由(仅适用于 IPv4)。
    -w timeout 等待每次回复的超时时间(毫秒)。
    -R 同样使用路由标头测试反向路由(仅适用于 IPv6)。根据 RFC 5095,已弃用此路由标头。如果使用此标头,某些系统可能丢弃回显请求。
    -S srcaddr 要使用的源地址。
    -c compartment 路由隔离舱标识符。
    -p Ping Hyper-V 网络虚拟化提供程序地址。
    -4 强制使用 IPv4。
    -6 强制使用 IPv6。

  • 常见系统的TTL值:
    WINDOWS NT/2000 TTL:128
    WINDOWS 95/98 TTL:32
    WIN7 TTL:64
    UNIX TTL:255
    LINUX TTL:64/255

  • 给baidu丢垃圾

    1
    ping -l 65500 www.baidu.com -t

2.telnet

查看某个端口是否可访问。首先要开启telnet功能。
net start telnet

  • 选项:
    telnet [-a][-e escape char][-f log file][-l user][-t term] [host[port]]
    -a 企图自动登录。除了用当前已登陆的用户名以外,与 -l 选项相同。
    -e 跳过字符来进入 telnet 客户端提示。
    -f 客户端登录的文件名
    -l 指定远程系统上登录用的用户名。要求远程系统支持 TELNET ENVIRON 选项。
    -t 指定终端类型。支持的终端类型仅是: vt100, vt52, ansi 和 vtnt。
    host 指定要连接的远程计算机的主机名或 IP 地址。
    port 指定端口号或服务名。
    1
    telnet www.baidu.com 80
    访问百度服务器的80端口

3.netstat

显示协议统计信息和当前 TCP/IP 网络连接。

  • 选项:
    NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [interval]
    -a 显示所有连接和侦听端口。
    -b 显示在创建每个连接或侦听端口时涉及的可执行程序。在某些情况下,已知可执行程序承载多个独立的组件,这些情况下,显示创建连接或侦听端口时涉及的组件序列。在此情况下,可执行程序的名称位于底部 [] 中,它调用的组件位于顶部,直至达到 TCP/IP。注意,此选项可能很耗时,并且在你没有足够权限时可能失败。
    -e 显示以太网统计信息。此选项可以与 -s 选项结合使用。
    -f 显示外部地址的完全限定域名(FQDN)。
    -n 以数字形式显示地址和端口号。
    -o 显示拥有的与每个连接关联的进程 ID。
    -p proto 显示 proto 指定的协议的连接;proto可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s选项一起用来显示每个协议的统计信息,proto 可以是下列任何一个:IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
    -q 显示所有连接、侦听端口和绑定的非侦听 TCP 端口。绑定的非侦听端口不一定与活动连接相关联。
    -r 显示路由表。
    -s 显示每个协议的统计信息。默认情况下,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;-p 选项可用于指定默认的子网。
    -t 显示当前连接卸载状态。
    -x 显示 NetworkDirect 连接、侦听器和共享终结点。
    -y 显示所有连接的 TCP 连接模板。无法与其他选项结合使用。
    interval 重新显示选定的统计信息,各个显示间暂停的间隔秒数。按 CTRL+C 停止重新显示统计信息。如果省略,则 netstat 将打印当前的配置信息一次。

    1
    netstat -ano
  • 状态:
    LISTENING:监听
    ESTABLISHED:已建立连接
    TIME_WAIT:超时

  • 利用netstat查询端口被哪个进程占用:
    netstat查询 tcp/ip 连接
    tasklist列举任务进程
    taskill杀任务进程
    taskmgr打开任务管理器

1.查找所需端口,得到应用PID

1
netstat -ano | findstr [port]

2.得到详细进程信息

1
tasklist | findstr [PID]

看看任务管理器,查找PID

1
taskmgr

3.关闭应用

1
taskill /im [name.exe]

4.netsh

  • 定义:netsh(Network Shell)是一个windows系统本身提供的网络配置命令行工具,可以用来修改windows的ip、网关、dns信息

  • 用法:
    netsh
    ? - 显示命令列表
    add - 在项目列表上添加一个配置项目
    advfirewall - 更改到 netsh advfirewall上下文
    bridge - 更改到netsh bridge上下文
    delete - 在项目列表上删除一个配置项目
    dhcpclient - 更改到netsh dhcpclien 上下文
    dnsclient - 更改到 netsh dnsclient上下文
    dump - 显示一个配置脚本
    exec - 运行一个脚本文件
    firewall - 更改到netsh firewall 上下文
    help - 显示命令列表
    http - 更改到 netsh http上下文
    interface - 更改到 netsh interface上下文
    ipsec - 更改到netsh ipsec上下文
    lan - 更改到netsh lan上下文
    mbn - 更改到 netsh mbn上下文
    namespace - 更改到 netsh namespace上下文
    netio - 更改到 netsh netio上下文
    p2p - 更改到 netsh p2p上下文
    ras - 更改到 netsh ras上下文
    rpc - 更改到 netsh rpc上下文
    set - 更新配置设置
    show - 显示信息
    trace - 更改到 netsh trace上下文
    wcn - 更改到 netsh wcn上下文
    wfp - 更改到 netsh wfp上下文
    winhttp - 更改到 netsh winhttp上下文
    winsock - 更改到 netsh winsock上下文
    wlan - 更改到 netsh wlan上下文

    int ip

    dump

  • 备份网络配置
    netsh dump > [route]

    1
    netsh dump > F:netsh_dump.txt
  • 设置静态ip
    set address name="[locallink]" source=static addr=192.168.0.7 mask=255.255.255.0

    1
    set address name="VLAN" sourse=static addr=192.168.43.160 mask=255.255.255.0
  • 设置自动获取ip
    set address name="[locallink]" source=dhcp

  • 设置其他(网关,dns等)
    set address name="[locallink]" gateway=[172.19.96.1] gwmetric=1

  • 重置winsock目录。
    netsh winsock reset

    如果计算机winsock协议配置有问题的话将会导致网络连接等问题,通过重置winsock目录借以恢复网络,这个命令可以重新初始化网络环境,已解决由于软件冲突,病毒原因造成的参数错误问题。

    适用情况:当端口被占用,却又无法查出进程时,netsh winsock reset重置winsock目录+重启电脑。

  • 重置TCP/IP协议
    netsh int ip reset {C:\resetlog.txt}
    相当于卸载并重新安装TCP/IP协议,使其恢复到初次安装操作系统时的状态

  • 设置防火墙
    查看图形界面
    firewall.cpl
    1.关闭/开启防火墙
    netsh firewall set opmode mode=[disable/enable]

  • 获取连接过的wifi密码
    1.查看当前系统已经保存的网络
    netsh wlan show profiles
    2.查看指定wifi的密码
    netsh wlan show profile name="ssid" key=clear

  • 查看TCP全局参数
    netsh interface tcp show global
    设置接受窗口级别(normal)
    netsh interface tcp set global autotuninglevel=normal


5.ipconfig

  • 定义:可用来显示当前的TCP/IP配置的设定值。这些信息一般用来检验人工配置的TCP/IP设置是否正确

  • 用法:
    ipconfig [/allcompartments] [/? | /all |
    /renew [adapter] | /release [adapter] |
    /renew6 [adapter] | /release6 [adapter] |
    /flushdns | /displaydns | /registerdns |
    /showclassid adapter |
    /setclassid adapter [classid] |
    /showclassid6 adapter |
    /setclassid6 adapter [classid] ]
    其中
    adapter 连接名称
    (允许使用通配符 * 和 ?,参见示例)

  • 选项:
    /? 显示此帮助消息
    /all 显示完整配置信息。
    /release 释放ip。(适用于ip地址非静态分配的网卡,+/renew)
    /release6 释放指定适配器的 IPv6 地址。
    /renew 更新获取ip。
    /renew6 更新指定适配器的 IPv6 地址。
    /flushdns 刷新dns。
    /registerdns 刷新所有 DHCP 租用并重新注册 DNS 名称
    /displaydns 显示 DNS 解析程序缓存的内容。
    /showclassid 显示适配器允许的所有 DHCP 类 ID。
    /setclassid 修改 DHCP 类 ID。
    /showclassid6 显示适配器允许的所有 IPv6 DHCP 类 ID。
    /setclassid6 修改 IPv6 DHCP 类 ID。

ipconfig /flushdns刷新DNS解析缓存


6.net

NET
[ ACCOUNTS | COMPUTER | CONFIG | CONTINUE | FILE | GROUP | HELP |
HELPMSG | LOCALGROUP | PAUSE | SESSION | SHARE | START |
STATISTICS | STOP | TIME | USE | USER | VIEW ]

查看用户net user
添加用户net user [user] /add
删除用户net user [user] /del
启用/禁用用户net user [user] /active:{yes|no}
添加到管理员组net localgroup administrators [user] /add
查看共享net share
共享F盘 net share f=F:/
取消共享net share f/delete
查看特定主机共享net view [hostname]
开启服务net start [services] 查看服务services.msc
停止服务net stop [services]


7.tracert

  • 定义:tracert是windows路由器跟踪实用程序,可以用于确定ip数据包访问目标时选择的路径,也可以用于故障排查。

  • 用法:
    tracert + ip
    tracert + 域名

  • 参数
    -d 不将地址解析成主机名。
    -h maximum_hops 搜索目标的最大跃点数。
    ​ -j host-list 与主机列表一起的松散源路由(仅适用于 IPv4)。
    -w timeout 等待每个回复的超时时间(以毫秒为单位)。
    ​ -R 跟踪往返行程路径(仅适用于 IPv6)。
    ​ -S srcaddr 要使用的源地址(仅适用于 IPv6)。
    ​ -4 强制使用 IPv4。
    ​ -6 强制使用 IPv6。


8.shutdown

  • 用法:

    ​ C:\Windows\system32\shutdown.exe [/?]

  • 参数:
    ​ /? 显示帮助。这与不键入任何选项是一样的。
    /i 显示图形用户界面(GUI)。这必须是第一个选项。
    /l 注销。这不能与 /m 或 /d 选项一起使用。
    ​ /s 关闭计算机。
    ​ /sg 关闭计算机。在下一次启动时,如果启用了自动重启登录,则将自动登录并锁定上次交互用户。登录后,重启任何已注册的应用程序。
    /r 完全关闭并重启计算机。
    ​ /g 完全关闭并重启计算机。重新启动系统后,如果启用了自动重启登录,则将自动登录并锁定上次交互用户。登录后,重启任何已注册的应用程序。
    ​ /a 中止系统关闭。这只能在超时期间使用。与 /fw 结合使用,以清除任何未完成的至固件的引导。
    /p 关闭本地计算机,没有超时或警告。 可以与 /d 和 /f 选项一起使用。
    ​ /h 休眠本地计算机。可以与 /f 选项一起使用。
    ​ /hybrid 执行计算机关闭并进行准备以快速启动。必须与 /s 选项一起使用。
    ​ /fw 与关闭选项结合使用,使下次启动转到固件用户界面。
    ​ /e 记录计算机意外关闭的原因。
    ​ /o 转到高级启动选项菜单并重新启动计算机。必须与 /r 选项一起使用。
    ​ /m \computer 指定目标计算机。
    ​ /t xxx 将关闭前的超时时间设置为 xxx 秒。有效范围是 0-315360000 (10 年),默认值为 30。如果超时时间大于 0,则默示为/f 参数。
    ​ /c “comment” 有关重新启动或关闭的原因的注释。最多允许 512 个字符。
    ​ /f 强制关闭正在运行的应用程序而不事先警告用户。 如果为 /t 参数指定大于 0 的值,则默示为 /f 参数。
    ​ /d [p|u:]xx:yy 提供重新启动或关闭的原因。p 指示重启或关闭是计划内的。 u 指示原因是用户定义的。 如果未指定 p 也未指定 u,则重新启动或关闭是计划外的。xx 是主要原因编号(小于 256 的正整数)。yy 是次要原因编号(小于 65536 的正整数)。

  • 两分钟后关闭计算机

    1
    shutdown /p -t 120
  • 取消计划

    1
    shutdown /a

9.disk

磁盘修复:

  • chkdsk(非法关机或者系统死机)查看磁盘信息
    chkdks F:加上盘符
    chkdks /f检测错误并修复
    chkdks /r查找坏扇区并修复
    ...

  • convert
    ​ 。。。

  • diskpart(分区,格式化等等)
    diskpart进入模式
    listdiskls磁盘
    select disk 1选择磁盘1
    clean格式化磁盘
    creat partition primary创建主分区
    format fs=ntfs quick lable=“E”分区E盘
    ...

系统文件缺失:

  • sfc(system file check)检查系统文件完整性并修复

  • sfc verifyonly 仅扫描,不修复

  • sfc...

    10.wget


10.net use

IPC$是共享“命名管道”的资源,利用IPC$连接者可以与目标主机建立一个空的连接而无需用户名与密码(在对方主机开启IPC$共享的情况下),利用这个连接,连接者可以得到目标主机的用户列表(在管理员未禁止导出用户列表时

  • net use \\IP\ipc% "" /user:""建立空连接(包含三个空格)
  • net use \\IP\ipc$ "用户名" /user:"密码"建立非空连接
  • net use z:\\IP\c$ "密码" /user:"用户名"映射默认连接,将对方的C盘映射为自己的Z盘
    net use z:\\IP\c$如果已经和目标建立了IPC$,则可以直接用IP+盘符+$访问
  • net use \\IP\ipc$ /del删除一个ipc$连接
  • net use c: /del删除共享映射,删除映射的C盘


9.小结

  • 一个简单的.bat小工具
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    @echo off
    cd G:\Code\Blog\files
    title hexo for blog
    color 0a
    chcp 65001
    echo=
    :start
    echo 1.new
    echo 2.generate
    echo 3.server
    echo 4.deploy
    echo 5.clean
    echo 6.exit
    set /p var=Input your choice PLZ:
    if not defined var goto start
    if %var%==1 goto 1
    if %var%==2 goto 2
    if %var%==3 goto 3
    if %var%==4 goto 4
    if %var%==5 goto 5
    if %var%==6 goto 6
    goto start
    :1
    set /p var1=hexo new :
    echo new %var1% ...
    start G:\Code\Blog\files\source\_posts
    hexo new %var1%
    :2
    hexo g
    :3
    start http://localhost:4000
    hexo s
    :4
    hexo d
    :5
    hexo clean
    :6
    exit