[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [求助]只保留桌面固定的文件其余全部删除批处理

求一个批处理:
只保留桌面上的"我的电脑" "IE" "单机游戏" "网络游戏" "查询余额" "结帐" 其余桌面的文件全部删除的批处理

另求助:桌面自动排列图标
1

评分人数

  1. @echo off&set ""%~n0"=a"
  2. for %%i in ("单机游戏" "网络游戏" "查询余额" "结帐") do set "%%i=%%i"
  3.     for /f "delims=" %%i in ('dir /a-d /b 2^>nul') do if not defined "%%~ni" del "%%i"
  4. pause
复制代码

TOP

  删除文件的时候,保留指定的一批文件,这是个比较经典的问题。要解决这个问题,有以下几种方案可供挑选:

  1、最直接的,也是最没有效率的做法:列举文件夹下的所有文件,和要保留的文件一一对比,从而决定是否删除;
  缺点:效率十分低下。

  2、把要保留的文件复制或移动到其他地方,删除指定目录下的所有文件后,再移回来。
  缺点:如果要保留的文件比较大的话,一来会占用比较大的临时空间,二来复制和移动的时候要花费比较长的时间;

  3、最好的办法:先把指定目录下所有文件的属性取消,然后,把要保留的文件加上某种属性,最后,删除文件的时候,跳过具有这种属性的文件;
  缺点:会改变要保留的文件的属性——如果对文件的属性不在意的话,这个问题不是缺点。

  头两种方案的缺陷十分明显,我就不写代码了;对第3种方案,给出如下演示代码,请按照注释操作(注意:这个代码不能放在要删除文件的目录下运行,保留文件列表.txt要和这个脚本放在同一目录下):
  1. @echo off
  2. :: 指定要处理的目的路径,可以自由改动
  3. set "route=%userprofile%\桌面"
  4. :: 去掉指定文件夹下所有文件的所有属性
  5. for /f "delims=" %%i in ('dir /a-d /b "%route%" 2^>nul') do attrib -s -h -r "%route%\%%i"
  6. :: 给需要保留的文件加上隐藏属性(保留文件列表.txt中的文件一行一条记录,只填写文件名+后缀名,如test.txt)
  7. for /f "delims=" %%i in (保留文件列表.txt) do attrib +h "%route%\%%i"
  8. :: 删除所有不具备隐藏属性的文件
  9. del /a-h /f /q "%route%\*.*"
  10. :: 把所有的隐藏文件去掉隐藏属性
  11. attrib -h "%route%\*.*"
  12. pause
复制代码
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

这个俺也很想知道怎样做,可惜没人回答.

TOP

版主是不是记错了啊 这应该是我们初次见面

请多关照!!!

TOP

楼主,我们又见面了。但我现在没兴趣解答了。有始无终。。。

==========================================
鉴于有不少人关注此问题,就给出一个方法吧

  1. @echo off
  2. if /i "%~dp0"=="%userprofile%\桌面\" (move /y "%~f0" C:\ & call "C:\%~n0")
  3. for %%a in ("单机游戏" "网络游戏" "查询余额" "结帐") do (move "%userprofile%\桌面\%%a.lnk" C:\)
  4. rd /s/q ""%userprofile%\桌面" && md "%userprofile%\桌面"
  5. for %%a in ("单机游戏" "网络游戏" "查询余额" "结帐") do (move "C:\%%a.lnk" "%userprofile%\桌面\")
  6. del "%~f0"
复制代码

[ 本帖最后由 zqz0012005 于 2008-9-27 17:53 编辑 ]
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

返回列表