分类
Windows

开机自动挂载VHD虚拟磁盘

除了将 VHD 文件用人工方式在【磁盘管理】里【附加】来挂载以外,也能用【脚本】来实现自动挂载。

打开开始菜单中的【启动】文件夹,将写好的 mount.bat 放入即可。Mount.bat 文件的内容为:

diskpart /s C:\mount.txt

mount.txt 文件的内容为:

select vdisk file=C:\xxx.vhdx
attach vdisk
exit

这种方式最简单,但是每次开机弹出的命令行以及用户帐户控制许可。

于是很自然地就想到了 Windows 计划任务。在上面的【批处理】的基础上,配置【计划任务】。重启后,恼人的命令行和用户账户控制提示没有了。

虽然以【计划任务】的方式来挂载 VHD 已经相当方便了,但是也许并不是那么快捷——因为计划任务是通过一个叫做 【Task Scheduler】 的【系统服务】来调度的,只有用户级别的执行优先级,而倘若能跨过【Task Scheduler】从计划任务升级为 【系统服务】 来执行,那么效率和优先级都会好很多!

可是自 Win7 以后,微软对能够作为【系统服务】运行的程序进行了更严格的规定,以致于用户不能再那么轻易地将自己定制的程序作为系统服务来运行。就算可以通过 SC 命令安装服务,一般也启动不了。会报错。

分类
Windows

批处理文件中的 %~d0

批处理,%~d0 cd %~dp0 代表什么意思?

~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录。语法选项:

~0         - 删除任何引号("),扩充 %0
%~f0        - 将 %0 扩充到一个完全合格的路径名(“f”是file,即文件)
%~d0        - 仅将 %0 扩充到一个驱动器号
%~p0        - 仅将 %0 扩充到一个路径
%~n0        - 仅将 %0 扩充到一个文件名(“n”是name 文件名)
%~x0        - 仅将 %0 扩充到一个文件扩展名
%~s0        - 扩充的路径只含有短名(“s”为Short,短的)
%~a0        - 将 %0 扩充到文件的文件属性(“a”为attribute,即属性)
%~t0        - 将 %0 扩充到文件的日期/时间(“t”time)
%~z0        - 将 %0 扩充到文件的大小(Size 大小)
%~PATH:0    −查找列在路径环境变量的目录,并将PATH:0 - 查找列在路径环境变量的目录,并将 %I 扩充
              到找到的第一个驱动器号和路径。
%~ftza0     - 将 %0 扩充到类似输出线路的 DIR

%0为当前批处理文件,如果0换成1为第一个文件,2为第2个

分类
Windows 笔记

Windows批处理命令之Start

在Windows下执行批处理脚本会打开一个黑乎乎的控制台窗口,任务未执行完成时窗口不会关闭。

编写一个打开软件的脚本,软件未退出时,启动bat脚本的窗口不会被关闭。使用start命令启动,可以实现命令窗口自动关闭。start命令说明:

bat脚本如下:

@echo off

set CURRENT_DIR=%cd%

start "google-chrome" "%CURRENT_DIR%\chrome" --user-data-dir="%CURRENT_DIR%\UserData\qizheng@myid01.com"

保存为Chrome.bat

windows执行bat脚本,都会打开命令窗口,即使自动退出,也会有个黑框一闪而过。使用vbs脚本执行脚本可以隐藏控制台。如下:

set ws=WScript.CreateObject("WScript.Shell") 
ws.Run ".\Chrome.bat",0

保存为vbs,双击可执行。

在这里应该看得出来了,我写的脚本是打开Chrome浏览器,并指定用户数据目录。