|
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 |
|
|
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 |
|