今天在自己编辑一个能够实现收藏和还原文件夹的批处理命令中,遇到了一个难题那就是在dos6.0下能
实现的choice选项,但是在xp中不能实现!具体如下:(choice命令和set命令直接从网页中摘抄,如果
你想查询具体的命令使用方法可以在xp的dos命令提示符下输入 命令 /?查询
需要实现的目的:通过执行简单的批处理命令实现
1、备份收藏夹,2、还原收藏夹3、清除垃圾文件4、退出。
但是在使用choice中,却不能实现,因为xp 中好像是不支持它了,如何实现呢,后来通过查阅资料
发现了dos中的"set"命令,同样可以达到"choice"命令功能!
choice命令详解:
语法 : CHOICE [/C[:]keys] [/N] [/S] [/T[:]c,nn] [text]
参数:
text
指出要在提示符前显示的正文。仅当在提示符前的正文中包括有开关字符(/)作
为正文内容时,才要用双引号。如果不指定正文,CHOICE仅显示一个提示符。
开关项:
/C[:]keys
指定提示中可接受的按键。显示时,这些键出现在[]内,键之间以逗号分隔,最后跟一问号。若不指定/C开关,CHOICE采用隐含值YN。冒号(:)是可选项。
/N
让CHOICE不显示提示符,但提示符前的正文仍然显示。若指定了/N开关,所指定的
按键仍有效。
/S
使CHOICE区别大小写字母。若没指定/S,CHOICE对任何用户指定的键,大小写不作
区分。
/T[:]c,nn
在对某一指定关键字作默认设置前,让CHOICE等待一指定秒数的时间。/T转换中的值如下所设:
c
指定等待nn秒后作为默认值的那个字符。该字符必须出现在/C开关后的按键
集中。
nn
指定暂停的秒数。可接受0-99之间的值。若指定为0,表示默认设置前不暂停。
set 命令详解
显示、设置或删除 cmd.exe 环境变量。
SET [variable=[string]]
variable 指定环境变量名。
string 指定要指派给变量的一系列字符串。
要显示当前环境变量,键入不带参数的 SET。
如果命令扩展被启用,SET 会如下改变:
可仅用一个变量激活 SET 命令,等号或值不显示所有前缀匹配SET 命令已使用的名称的所有变量的值。
例: SET P
会显示所有以字母 P 打头的变量
如果在当前环境中找不到该变量名称,SET 命令将把 ERRORLEVEL设置成 1。
SET 命令不允许变量名含有等号。
在 SET 命令中添加了两个新命令行开关:
SET /A expression
SET /P variable=[promptString]
/A 命令行开关指定等号右边的字符串为被评估的数字表达式。
除十六进制有 0x 前缀,八进制有 0 前缀的,数字值为十进位数字。因此,0x12 与 18 和 022 相同。请注意八进制公式可能很容易搞混: 08 和 09 是无效的数字,因为 8 和 9 不是有效的八进制位数。
/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptString。promptString 可以是空的。
%PATH:~10,5%
会扩展 PATH 环境变量,然后只使用在扩展结果中从第 11 个(偏移量 10)字符开始的五个字符。如果没有指定长度,则采用默认值,即变量数值的余数。如果两个数字(偏移量和长度)都是负数,使用的数字则是环境变量数值长度加上指定的偏移量或长度。
%PATH:~-10%
会提取 PATH 变量的最后十个字符。
%PATH:~0,-2%
会提取 PATH 变量的所有字符,除了最后两个。
如果命令扩展被启用,有几个动态环境变量可以被扩展,但不会出现在 SET 显示的变量列表中。每次变量数值被扩展时,这些变量数值都会被动态计算。如果用户用这些名称中任何一个定义变量,那个定义会替代下面描述的动态定义:
%CD% - 扩展到当前目录字符串。
%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。
%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。
%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。
%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。
%CMDEXTVERSION% - 扩展到当前命令处理器扩展版本号。
%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。
批处理命令全文
cls
@echo off
echo 本程序可以备份、还原收藏夹、以及清除系统垃圾文件!
echo
echo 请选择你所要执行的操作!
echo
echo 1、备份收藏夹,2、还原收藏夹3、清除垃圾文件4、退出。
set /p choice=请选择:
if %choice% == 4 goto exit
if %choice% == 3 goto clean
if %choice% == 2 goto recall
if %choice% == 1 goto backup
:menu
@echo off
echo
echo 1、备份收藏夹,2、还原收藏夹3、清除垃圾文件4、退出。
文件路径,暂时还不知道如何用变量实现)
echo 备份完成,请继续选择操作!
goto menu
:recall
@echo off
echo 正在还原收藏夹,请稍等......
rd /s/q "%userprofile%/favorites"
xcopy /e/c/f/r/y D:/邵祥顺个人文档/Favorites/*.* "%userprofile%/favorites/*.*"
echo 还原完成,请继续选择操作!
goto menu
:clean
@echo off
echo 正在清除系统垃圾文件,请稍等......
del /f /s /q %systemdrive%/*.tmp
del /f /s /q %systemdrive%/*._mp
del /f /s /q %systemdrive%/*.log
del /f /s /q %systemdrive%/*.gid
del /f /s /q %systemdrive%/*.chk
del /f /s /q %systemdrive%/*.old
del /f /s /q %systemdrive%/recycled/*.*
del /f /s /q %windir%/*.bak
del /f /s /q %windir%/prefetch/*.*
rd /s /q %windir%/temp & md %windir%/temp
del /f /q %userprofile%/cookies/*.*
del /f /q %userprofile%/recent/*.*
del /f /s /q "%userprofile%/Local Settings/Temporary Internet Files/*.*"
del /f /s /q "%userprofile%/Local Settings/Temp/*.*"
del /f /s /q "%userprofile%/recent/*.*"
echo 清除系统LJ完成!请继续选择操作!
goto menu
:exit
echo 感谢您使用本程序!
exit
set /p choice=请选择:
if %choice% == 4 goto exit
if %choice% == 3 goto clean
if %choice% == 2 goto recall
if %choice% == 1 goto backup
:backup
@echo off
echo 正在备份收藏夹,请稍等......
xcopy /e/c/f/r/y "%userprofile%/favorites/*.*" D:/xxxx个人文档/Favorites/*.* (这里改成你要保存收藏夹的