作为一个IT专家,在我的工作中常常充当着提示者的角色,影响那些比我年轻得多的每一个年轻人。从我的年龄和长时间从事计算机工作的经验来看,每当面临一个任务的时候,我都会下意识地认为使用基于命令行的工具是具有优势的。经常的,当我与那些苦战于创建复杂脚本的管理员们合作时,我都会忍不住地说:“用个批处理文件解决,会更容易,更快速,并且工作得更好。”当然我会看到他们的怪异目光,因为许多管理员太年轻了,以至于他们没有很好的DOS经验,甚至他们都不十分清楚批处理文件是什么(我告诉他们批处理文件是一个包含DOS命令的简单文本文件)。只要当我写起关于批处理文件的内容时,我都会收到大量的电子邮件询问关于如何创建和使用这些手边实用程序的信息。
利用命令行映射驱动器
我从管理员那里得到最多的询问是如何映射驱动器以便用户通过网络访问远程计算机上适当的文件夹(这些管理员常常尝试编写脚本去解决,但他们发现工作量往往比他们预想的要大)。他们也想知道是否有个秘诀来映射一个驱动器到一个没有共享的文件夹上。对于这两个问题,答案是使用命令行。
你可以用命令行Net Use来实现驱动器的映射。键入:
net use
对于不加命令行参数的选项而言,你将会得到当前已经映射的驱动器信息,这也会让你了解哪个驱动器盘符是可用的。下列信息显示了:
• 在登录时是否重新连接的当前状态,用文本指出“新连接将被重新连接”或者“新连接将不被重新连接”。
• 每一个连接的当前状态,用文本指出ok(意味着连接)或者断开连接。
• 使用通用命名标准(UNC)命名的每一个映射文件夹的名字。
• 网络类型(通常是Microsoft Windows,但如果你正运行着Novell NetWare客户端软件并且映射驱动器到一个NetWare服务器上,这时网络列出的就是NetWare)。
通常,你首次重启计算机时已映射的驱动器将会标记为断开连接,然而当你一旦访问映射的驱动器时,它的状态就改变为连接状态。你可以访问映射的驱动器在“我的电脑”中,或者也可以通过在命令行窗口键入驱动器的盘符来访问。如下:
K:
不要忘掉冒号。
创建一个映射驱动器
将一个共享的文件夹映射为一个驱动器,在命令行中键入:
net use d: \\<computername>\<sharename>
上例列举了你将共享文件夹指定为映射的驱动器盘符为d,如果路径中有任意一个文件夹的名字包含空格,就要封装整个路径,在开始处的双斜杠前和共享文件夹名称的结尾处用双引号(注意是英文字符)引起来。Windows这时就会反馈命令成功完成的信息。如果你还存有疑惑,就使用Net Use命令确认新的映射驱动器是否已经显示在命令反馈的列表中。
无论你想要新的映射在登录时重新连接与否,它都依赖于控制当前重新连接状态的登录选项。你可以设置这个重新连接选项,甚至更愿意用/persistent: [yes/no]来切换状态。举个例子,实现在登录时自动重新连接,键入:
net use f: \\<computer\share>/persistent: yes
仅仅在当前会话中映射驱动器(重新登录时映射驱动器将不存在),键入:
net use f: \\<computer\share> /persistent: no
你选择的重新连接选项会成为登录时默认的连接状态(包括这个选择会在登录时显示一个映射驱动器的图形对话框窗口)。
映射驱动器到未共享的文件夹
与Windows的图形界面不同,Net Use命令不只限于映射共享的文件夹,它还可以映射一个共享文件夹中的未共享子文件夹或一个共享驱动器下的多个文件夹,键入如下命令:
net use f: \\<computer>\<sharename>\<subfoldername>
映射一个不明确被共享的资源,这个功能是很有用的。因为你可以共享一个驱动器,然后映射多个或所有那个驱动器中的文件夹。当然,你必须对那样的一个环境有很明智的安全考虑,因此,确认并适当地设置目标未共享文件夹的权限是十分重要的。
移除映射驱动器
移除一个已映射的驱动器,键入:
net use d: /delete
这样就会取消驱动器盘符为d的映射驱动器。系统会反馈如下信息:
d:被成功删除
用批处理文件映射驱动器
Net Use命令给了你使用批处理文件创建映射驱动器的能力。管理员能使用包含了Net Use命令的登录批处理文件为用户设置映射驱动器。对于用户而言,映射好的驱动器可以更方便他们访问指定软件和数据的文件夹。例如,对于那些工作中使用公司数据库的用户而言,你可以在登录脚本中包含下面内容:
net use g: \\<DBServer<\<OurDatabase>
net use h: \\<DBServer>\<DatabaseFiles>
文件名无论怎样命名都可以(它必须是一个.bat的扩展名),复制它到域控制器(DC)的登录脚本目录下。DC上默认登录脚本的位置在%SystemRoot%\ SYSVOL\sysvol\<domainname.com>\scripts。脚本的子文件夹会被自动共享,共享名为NETLOGON(这个名字就是当你在“网上邻居”中展开DC后,出现在远程计算机上的名字)。
要小心,不要映射的驱动器盘符是用户本地驱动器正在使用的盘符。在用户登录过程中,Windows会在脚本子文件夹中运行登录脚本前首先映射本地驱动器。如果你的登录脚本尝试去映射一个已经使用的驱动器盘符的话,系统将会反馈本地驱动器名称正在使用的错误信息。
使用批处理文件进行计算机维护
我使用批处理文件来进行计算机一般维护和清理的任务。例如,在每天的最后我会移除我工作中用到的所有备份的微软Word文档副本。我喜欢Word中备份功能的特点,但当我已经成功存储当前文档后我就不再需要备份副本了,并且我也想恢复这些备份的副本占据的磁盘空间。我会使用如下命令来移除备份文件。注意,包含空格的文件夹名是要用双引号引起来的。
del c:\"documents and settings"\kathy.ivenseast\"my documents"\*.wbk /s /f /q
/s参数是告知Windows从所有子文件夹中删除指定的文件。/f参数是告知Windows强制删除只读文件。/q参数(安静模式)告知Windows当命令中使用通配符时不用询问确认信息。我使用如下命令来复制我的账户软件文件,Eudora的邮箱和Eudora的地址簿到“我的文档”中他们各自的文件夹下:
Copy C:\QuickBooks\"company files"\*.qbw C:\"Documents and Settings" \kathy.ivenseast\"my documents" \QBBackup /y
Copy C:\Quicken\ivens.* C:\"Documents and Settings"\kathy.ivenseast\"my
documents"\QuickenBackup /y
Copy C:\Eudora\data\*.mbx C:\"Documents and Settings"\kathy.ivenseast\"my
documents"\EudoraBackup /y
Copy C:\Eudora\data\nndbase.txt C:\"Documents and Settings" \kathy.ivenseast\"my documents" \EudoraBackup /y
/y参数告知Windows当复制并覆盖现有文件时不要提示确认信息。我使用这个方法将任意文件夹下的文件移动到“我的文档”,利用这个原理我每日备份“我的文档”文件夹。顺便说一下,有些软件让你选择一个不同于软件安装主文件夹的地方作为数据文件夹。这种情况你可以在我的文档下创建这个数据文件夹以便更容易备份。
用批处理文件备份
仅仅恢复一个文件就要从备份文件中提取花费非常长的时间,恢复一个简单的文件就要花费大约3倍的时间,因此我决定在我的工作站中停用所有的备份软件。我需要备份的仅仅是工作站中的用户数据,因此,我创建了一个批处理文件用于通过网络备份我的工作站。
我运行备份从目标(接收的)计算机,它能够从多台工作站获取备份文件。批处理文件有计划的自动运行。有些工作站会同时发送备份到一台工作站,也会从别的计算机接收备份(这是一个不错的点对点网络的范例)。每一个接收的计算机有一个叫XXbackup的文件夹(用XX来代替工作站的计算机名称)。管理多台计算机备份的接收计算机会增加YYbackup,ZZbackup等的文件夹。我的备份批处理文件在发送计算机上映射共享驱动器,移动数据文件到“我的文档”文件夹中,然后复制“我的文档”到接收计算机。我可以为要映射的驱动器任意指定盘符。
图1:两台计算机进行备份的示例批处理文件中的命令
一台计算机作为管理用途,被一个叫Kathy的用户使用,它的C盘被共享为admin-c。它存储“我的文档”之外别的文件夹的软件数据文件。另一台计算机作为应用用途,被一个叫Sarsh的用户使用,它的C盘被共享为apps-c。这台计算机运行批处理文件(作为接收计算机)为每一个计算机的备份创建一个独立的文件夹。因为我仅仅要复制“我的文档”,所以批处理文件首先会关注“我的文档”文件夹中所有我的备份需求。
注意这点,当批处理文件准备复制“我的文档”时,我使用了比Copy命令的参数更强的Xcopy命令(如图1)。例如,用Xcopy,我能在接收计算机上创建子目录,以便用户在“我的文档”中无论何时创建一个子目录,它都能正确复制(对于全部命令参数,Windows帮助文件都会有详尽的描述)。
当然,你也能使用我早前描述过的那些命令创建一个批处理文件,来实现在本地计算机上从“我的文档”之外的文件夹向“我的文档”复制数据文件。那么,接下来你必须要做的就是告诉用户们在每天工作的最后运行批处理文件并确认是否所有的数据都自动备份到“我的文档”中。甚至可以更好,可以在用户常规下班时间后,从计划任务中自动运行批处理程序(如果你确信让用户自己管理备份是个好主意的话,我就把我的房子折价卖给你。很明显,让用户自己管理不是个好主意)。另一个选择是写一个备份批处理文件,来实现在数据自身的文件中备份数据文件,这样会比备份前就移动数据文件到“我的文档”好些。
批处理文件的力量
就像我在文章开始处提及的那样,批处理文件仅仅是包含了DOS命令的文本文件,一个命令一行。你可以利用大量的批处理命令和提供附加性能的命令组合使你的批处理文件更加强大有力。包括程序控制类型的命令例如If、If not、GoTo、For和那些可用的变量(用%字符表示)。我没有时间解释或列举,所有这些工具,你都能在Windows的帮助文件中学到他们的详尽用法。
你可以使用批处理文件来调用软件应用程序和其包含的附加任务。例如,一些应用程序会在应用的文件夹中自动存储数据。因为当可执行程序运行时,那里就是用户被指定的文件夹。如果一个应用程序没有强硬指定数据位置,那么你就可以使用批处理文件从默认位置移动数据,以便数据文件存储在别的位置。在批处理文件中,你想要指定用户存储和调用应用程序的文件夹所移动到的位置可以是本地文件夹(使用CD命令),也可以是一个映射的驱动器。我可以使用这个方法为个人职员使用的内部应用程序提供解决技巧(但是它不适用于中心数据库)。
CD c:\mydata
c:\CustomerFiles\OurApp.exe
或者,在“我的文档”中存储数据:
CD c:\"Documents and Settings"\%UserName%\"my documents"\MyCustomerData
c:\CustomerFiles\OurApp.exe
顺便说明,如果用户的日志文件在域中,用户名的变量就变为%username%.%userdomain%,若你要打开Documents and Settings,这就是用户名显示的方法(像例中那样,整个区域包含两个名字:域名和用户名)。
存储数据文件在备份服务器上:
net use z: \\ServerName\CustomerFiles\MyOwnFolder
z:
c:\CustomerFiles\OurApp.exe
你也可以使用批处理文件来调用应用程序,然后自动地备份数据文件,例如下例(之前我已经创建了许多本地用户)。
当用户退出程序的时候,批处理文件中的下一行就会执行(用<filename>替代数据文件名称)。
c:\QUICKENW\qw.exe
Copy c:\quickenw\<filename>.* C:\"Documents and Settings"\%UserName%\"my documents"\QuickenBackup /y
Exit
此批处理文件假定用户每天备份“我的文档”文件夹。
为任意文件夹添加命令提示符
通常,我需要在特殊文件夹或子文件夹中使用命令提示符。例如,我不得不重命名文件夹中的一批文件,正确命令提示符是运行的唯一路径(通过可视化窗口改名是痛苦的,要一次一个的发动任务)。当打开命令提示窗口后,你不得不定位计算机中目的文件夹的位置,这是很耗时的。因为要通过打字的方法定位目的文件夹,通常很烦人。使用我的电脑或Windows浏览器从目的文件夹中按鼠标右键打开命令提示符是很容易的。
要在每个文件夹上右键点击的菜单中增加一个打开命令窗口的命令,你就需要编辑注册表,打开注册表编辑器按照下面步骤操作:
1.定位到HKEY_CLASSES_ ROOT\Directory\shell子项。
2.创建一个新子项,命名为OpenNew。
3.在OpenNew子项中,将右栏处的默认项打开,键入它的值为“打开命令窗口”(这个注册表值表示的是右键菜单上显示的名称,因此,你也能自由替代这个名称)。
4.在你新建的OpenNew子项下再创建一个子项,命名为Command。
5.在Command子项中,将右栏处的默认项打开,键入它的值为“cmd.exe /k cd %1”(你仅仅需要改变默认项的值,而不需要在子健中增加新的数据项)。
在你改变注册表后,导出注册表键项HKEY_CLASSES_ROOT\Directory\shell\OpenNew。Windows会用.reg的扩展名存储这个文件。将这个.reg文件复制到你工作上的每一台计算机,然后双击它以便在每一台计算机的注册表中增加键值。现在,无论你使用哪台计算机,你都可以在计算机的任意文件夹中打开命令窗口。
要在驱动器上增加这个命令,用相同的方法,只不过需要两个小小的改变。
• 定位HKEY_CLASSES_ROOT\ Drive\shell子项为开始定位点。
• HKEY_CLASSES_ROOT\Drive\shell\ OpenNew\Command子项中,右栏默认项的值为“cmd .exe /k”。
Windows PowerToys' Command Here软件能够完成上述功能。为不愿意下载额外软件也不愿意自己动手修改注册表的人们提供了方便。
定制命令窗口
要定制命令提示窗口,右键点击标题工具栏图标,任意选择“默认值”或“属性”之一。不管你选择哪一个,属性对话框的内容都是一样的,都是相同的选择栏和相同的选项。然而,每一个选择对系统的影响是不同的。
图2:Windows控制台属性
为所有命令提示窗口永久地改变默认的对话框设置,就要改变“默认值”的设置(Windows控制台属性见图2),所做的改变不会在当前窗口体现,但你会在下一次打开窗口时看见变化。改变对话框“属性”的设置("C:\WINDOWS\System32\cmd.exe"的“属性”)仅改变当前窗口的效果,并且效果会马上改变。另外,在你对话框设置并点击OK后,你可以选择“修改启动该窗口的快捷方式”使改变永久生效。例如,如果你使用特定的快捷方式(如你在开始菜单或桌面创建的快捷方式)打开命令提示窗口并且在"C:\ WINDOWS\System32\cmd.exe"的“属性”对话框中做了些改变的话,这些改变就会在下一次从相同快捷方式打开的命令提示窗口中得以体现。然而,改变设置的快捷方式是很难跟踪的,因此,如果你想永久地改变命令提示窗口的设置,就要改变“默认”的参数,而不是“属性”。
控制台窗口属性显示了4个命令栏,这些选项很容易懂,并且每一个选项都有相关的“这是什么?”帮助文件,你可以在选择名称上按鼠标右键看见它。只要你从“附件”子菜单中打开命令提示窗口你就可以看到新的设置效果。如果你在桌面或任务栏创建快捷方式的话(我就在“快速启动”工具栏中创建了一个),它也许不会使用新的设置。如果是这样,删除“快速启动”工具栏中的快捷方式,并且从“附件”子菜单中再次复制它到“快速启动”。
在你定制了完美的命令提示窗口后,就可以很容易地复制它到其它计算机。由于设置的改变会被写入注册表,因此你就必须导出注册表项。由于需要考虑用户帐户SID,你需要先查出自己帐户的SID值,然后导出HKEY_ CURRENT_USER\yoursid\Console。导出的文件被作为.reg文件存储,你应该适当的命名(例如“我的命令提示窗口.reg”)。把它复制到其它计算机,注意要把yoursid修改为目标用户帐户的SID值,双击它后,Windows会让你确认是否要将这些设置添加进注册表。
在命令提示窗口的编辑
你可以从命令提示窗口中复制(但不能剪切)文字,当你已经启动“快速编辑模式”后(我已经论述过了,它在“属性”或“默认”对话框窗口的“选择”栏),就可以拖动鼠标选择文字,按Enter键或是单击右键将所选文字复制到剪贴板了。如果你还没有启动“快速编辑模式”,右键点击窗口的标题栏,从弹出的下拉窗口中选择“编辑”,然后选择“标记”。拖动鼠标选择文字,或者将光标停在文字的开始处,按住Shift键,再用鼠标点击文字的结尾处选择整个区域,按Enter键将所选文字复制到剪贴板。
要在命令窗口中粘贴文字,你可以在光标位置处插入文字。如果你启动了“快速编辑模式”,右键单击就可以自动粘贴文字。如果没有启动“快速编辑模式”,右键点击并从弹出的菜单中选择“粘贴”。若你更愿意使用键盘操作,按Alt+Space,再按“E”键标记,按“P”键粘贴。
分享——任何地方受益于你的批处理文件
用命令行创建批处理文件使你的工作变得很舒适后,你就可以用你的知识(和你收集的批处理文件)帮助其它用户使生活更容易些。在一个点对点网络中,复制可用于映射驱动器或对完成维护任务有帮助的批处理文件给用户,并教他们怎样使用。你的朋友、邻居和亲戚会请教你参考说明和使用帮助。同时也会赏识你为他们提供的实用的批处理文件。让我们在计划任务中发送一套增加批处理文件的指令吧。
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |