Board logo

标题: [文件操作] 批处理保留目录结构移动在 mac/linux 下生成的 .* 文件(夹) [打印本页]

作者: MantisLin    时间: 2012-3-18 07:07     标题: 批处理保留目录结构移动在 mac/linux 下生成的 .* 文件(夹)

  1. echo off & cls
  2. rem 作用:将 mac/linux 上生成的以 . 开头的文件(夹)按原目录结构移动到 ".\macShit\年月日_时分秒毫秒" 文件夹下
  3. rem 在 WinXP/Win7 下测试成功,运行完此批处理后,可打开 macShit 文件夹,里面的东西是删除、还是按原路径放回,就随自己了。
  4. rem 在 mac/linux 使用 U 盘后,到 windows 上会发现 U 盘里多了许多以 . 开头的文件或文件夹
  5. rem 这些都是 mac/linux 所建立的缓存文件、回收站 等等
  6. rem mac/linux 的缓存文件在 windows 上毫无用处
  7. rem 而回收站……用惯了 windows,在 U 盘里删除东西时已经做好了无法后悔的觉悟(无论如何想后悔的时候就用——EasyRecover)
  8. rem 于是这个批处理诞生了……
  9. setlocal enableextensions enabledelayedexpansion
  10. rem 获取 日期、时间,生成路径 "shitName"
  11. for /f "tokens=3" %%a in ('REG QUERY "HKEY_CURRENT_USER\Control Panel\International" /v sDate 2^>nul') do set "sDate=%%a"
  12. for /f "tokens=3" %%a in ('REG QUERY "HKEY_CURRENT_USER\Control Panel\International" /v sTime 2^>nul') do set "sTime=%%a"
  13. for /f "tokens=1-3 delims=%sDate% " %%a in ("%date%") do set "uDate=%%a%%b%%c"
  14. for /f "tokens=1-4 delims=%sTime%." %%a in ("%time%") do set "utime=%%a%%b%%c%%d"
  15. set "uDate=%uDate: =0%"
  16. set "uTime=%uTime: =0%"
  17. set "shitFolder=macShit"
  18. set "shitName=%shitFolder%\%uDate%_%uTime%"
  19. rem 遍历所有以 . 开头的 shit,并调用 :moveShit 将其移动
  20. for /f "tokens=* delims=" %%a in ('dir/b/s/a/og .*') do (
  21. rem 跳过本目录下的 %shifFolder% 文件夹
  22. echo %%a | findstr /i /r "\<%cd%\%shitFolder%" >nul2>nul || (
  23. call :moveShit "%%a"
  24. )
  25. )
  26. endlocal
  27. pause
  28. exit/b
  29. rem 按照原文件、目录结构移动到 "macShit\日期_时间" 文件夹下
  30. :moveShit
  31. set "newPath=%~d0\%shitName%%~p1"
  32. if exist "%~1". (
  33. if not exist "%newPath%". md "%newPath%"
  34. attrib -s -h -r "%~1"
  35. move "%~1" "%newPath%"
  36. echo moved: %~1
  37. )
  38. goto :eof
复制代码

作者: find    时间: 2012-3-18 09:16

enableextensions这个删掉也没有问题吧?
作者: MantisLin    时间: 2012-3-19 21:45

确实,在这里没有用到,习惯了一写批处理就把它打上去……




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2