中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 帮忙修改 这个桌面清理批处理
作者:
标题: 帮忙修改 这个桌面清理批处理 上一主题 | 下一主题
xiaoe888
新手上路





积分 2
发帖 1
注册 2008-10-29
状态 离线
『楼 主』:  帮忙修改 这个桌面清理批处理

桌面我已经移出c盘了,我也不想通过组策略,或权限来限制大家(这是公用的电脑)在桌面建文件和文件夹,毕竟ie等都默认桌面为第一下载地址,这样比较方便。
我花了一下午,上网找了一些资料,自己攒了一个,我的目的是,大家自由的在桌面上建文件,我只是将除快捷方式以外的文件和文件夹(系统文件除外),一律移到一个指定文件夹。这可以用Windows自带的计划任务使其自动运行,自动清除桌面。


我第一次遍批文件,谢谢指教。



@echo off

echo 正在移动桌面文件,请稍等......

xcopy /e /r /h /i /k /y "D:\桌面\*.*" "D:\文件夹"

del /S /Q /A "D:\桌面\*.*"

dir "D:\桌面\" /ad /b /s |sort /r >>d:kill.txt

For /f %%i in (d:kill.txt) DO rd /s /q "%%i"

echo y|del d:kill.txt

echo 清除系统LJ完成!



桌面位置:D:\桌面\

移到:D:\文件夹


有几个问题,希望大家帮忙解决。

01.如何  复制和删除时排除 快捷方式,快捷方式的后缀为  lnk

怎么才可排除掉????

02.复制文件或文件夹时,如果重名,可以自动重命名,以免删除原有文件(我要给个公用电脑用)。

03.以下命令,在由kill.txt输回空文件夹路径时,路径上任何一个名称有空格,自动结束,然后输入下一个路径。当然系统会找不到路径,我不知如何改。

dir "D:\桌面\" /ad /b /s |sort /r >>d:kill.txt

For /f %%i in (d:kill.txt) DO rd /s /q "%%i"

echo y|del d:kill.txt


这一段,是我找的,用来删除空文件夹。作者解释如下:


提示:“dir d:”表示列D盘上的所有目录包括子目录列表,其中参数“/ad”表示列所有目录;参数“/b”表示只列出文件夹名称而不显示标题信息或摘要:参数“/s”表示搜索,即查找D盘中的所有文件夹和子文件夹;“|”是管道符号,将Dir命令的结果传递给“sort”命令;“sort”命令表示排序;“/r”表示逆序列排序。之所以要逆序列排序,是因为通过逆序列排序后,D盘上的所有子文件夹总是会位于其父文件夹的前面,这样在用For命令删除空文件夹时,空的子文件夹被首先删除了,因此空的父文件夹就可以删除了。否则,因空的父文件夹中尚有空的子文件夹,会造成无法删除的情况。“>>d:kill.txt”的作用是让屏幕回显重新定位到“d:kill.txt”文件中。

For 命令中参数“/f”的作用是让For命令从指定的文件中读取数据作为变量,示例是从Dir的结果文件“d:kill.txt”文件中读取数据,每次读取一行传递给RD命令;RD命令的作用是删除由For命令传递过来的每一个文件夹,因RD命令无法删除尚有内容的文件夹,所以经过For命令的循环后,只是删除了所有的空文件夹,有内容的文件夹会完好无损地被保留下来。



望高手帮忙修改谢谢啦。

[ Last edited by xiaoe888 on 2008-10-31 at 13:37 ]

2008-10-29 11:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dato
高级用户




积分 916
发帖 377
注册 2004-3-8
状态 离线
『第 2 楼』:  

以前桌面部署也遇到这种问题,有时候满屏都是乱78糟的文件,所以禁止用户对桌面进行写操作,效果很好很清爽
::Disable write to Desktop
rem %systemroot%\system32\cacls.exe "%userprofile%\桌面" /t /e /p admin:R
%systemroot%\system32\cacls.exe "%userprofile%\桌面" /t /e /p administrators:R
%systemroot%\system32\cacls.exe "%userprofile%\桌面" /t /e /p onlyit:R
rem %systemroot%\system32\cacls.exe "%userprofile%\桌面" /t /e /p only:R
%systemroot%\system32\cacls.exe "%userprofile%\桌面" /t /e /p everyone:R
rem %systemroot%\system32\cacls.exe "%allusersprofile%\桌面" /t /e /p admin:R
%systemroot%\system32\cacls.exe "%allusersprofile%\桌面" /t /e /p administrators:R
%systemroot%\system32\cacls.exe "%allusersprofile%\桌面" /t /e /p onlyit:R
rem %systemroot%\system32\cacls.exe "%allusersprofile%\桌面" /t /e /p only:R
%systemroot%\system32\cacls.exe "%allusersprofile%\桌面" /t /e /p everyone:R
%systemroot%\system32\cacls.exe "%allusersprofile%\桌面" /t /e /p "Power Users":R
%systemroot%\system32\cacls.exe "%allusersprofile%\桌面" /t /e /p Users:R
这种方式还是保留了system帐户对桌面的写操作,所以有时候还要借助psexec对一些非保留图标进行清除

..\psexec.exe -accepteula @..\only.txt -u onlyit -p "" -c -n 5 lnk.cmd
lnk.cmd
%systemroot%\system32\cacls.exe "%allusersprofile%\桌面" /t /e /p administrators:f
%systemroot%\system32\cacls.exe "%userprofile%\桌面" /t /e /p onlyit:F
for /f "delims=" %%a in ('dir /a /b "%allusersprofile%\桌面\*"') do if /i not "%%a" =="ACDsee.lnk" if /i not "%%a" =="drivers.lnk" if /i not "%%a" =="OA题苑+练习.exe" if /i not "%%a" =="学生.lnk" if /i not "%%a" =="教师.lnk" if /i not "%%a" =="移除U盘.exe" if /i not "%%a" =="自动关机.lnk" if /i not "%%a" =="解除自动关机.lnk" rd /q /s "%allusersprofile%\桌面\%%a" || del /s /q /f "%allusersprofile%\桌面\%%a"
for /f "delims=" %%a in ('dir /a /b "%userprofile%\桌面\*"') do if /i not "%%a" =="pif" if /i not "%%a" =="自动关机.lnk" if /i not "%%a" =="a.cmd" rd /q /s "%userprofile%\桌面\%%a" || del /s /q /f "%userprofile%\桌面\%%a"
%systemroot%\system32\cacls.exe "%userprofile%\桌面" /t /e /p onlyit:R
%systemroot%\system32\cacls.exe "%allusersprofile%\桌面" /t /e /p administrators:R
其它已知问题,由于有些软件需要向桌面写图标操作,如果不成功就意外中止,很笨吧这些软件,哈哈所以需要在安装时开启桌面写操作,安装完毕关闭就行了
@echo off
call :quiet>nul 2>&1
goto :EOF
:quiet
title 安装netbeans完毕后按任意键继续
%systemroot%\system32\cacls.exe "%allusersprofile%\桌面" /t /e /p administrators:f
pause
%systemroot%\system32\cacls.exe "%allusersprofile%\桌面" /t /e /p administrators:r
[ Last edited by dato on 2008-10-29 at 13:12 ]



http://dato.ys168.com
google search bot
http://dato.minidns.net/
2008-10-29 13:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 3 楼』:  

你完全可以自己做,遇到困难再来寻求帮助。

更改桌面位置需要修改注册表,而修改注册表后需要注销再重新登录(或者重新启动系统)才能生效。

其它的似乎没有必要考虑了,将桌面上的东西全部移走即可。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-10-29 13:12
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  

建议把
echo y|del d:kill.txt
改成
del /q /f /a d:\kill.txt



2008-10-29 20:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
newsuper
新手上路

坚持学习



积分 18
发帖 15
注册 2008-10-18
状态 离线
『第 5 楼』:  

看了2楼的帖子,对cacls命令有了一个初步的认识,自己做练习的时候发现一个问题。
   运行 cacls d: /t /e /d %username% 之后,d盘被禁止访问了,然后我运行cacls d: /t /e /g %username%:f,但是d盘依然拒绝访问。
运行上述两条命令到其他盘,可以禁止访问,然后解禁,c盘是系统盘,都没问题。
   不知道什么原因,望高人指点。(我的页面文件在d盘,其他的我不清楚了)。

2008-10-29 22:49
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dato
高级用户




积分 916
发帖 377
注册 2004-3-8
状态 离线
『第 6 楼』:  

我试了你上面的命令没问题

如果你是xp sp2系统开启 工具/文件夹选项.去掉使用简单文件共享的钩,然后右击该目录看看.

NTFS权限有用户,组,的关系,还有拒绝权限优先于其它权限

所以可能的原因是你的当前用户属于某个组,而该组用户被拒绝了.

偶尔有时候有些怪怪的NTFS设置从GUI界面也看不出来,也不知道怎么设置的却可以实现一些很奇怪的应用



http://dato.ys168.com
google search bot
http://dato.minidns.net/
2008-10-29 23:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: