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

[文件操作] [已解决]求批处理自动整理桌面文件并以日期归档 望大侠指点

把今天--桌面---上的(新建文件 或者 下载的或者粘贴复制过来的文件)无论任何类型的文件归档到归档文件夹下以日期命名(按日期年月日如20150101)的文件夹里面,只处理今天的,之前(前天明天)之后的文件都不需要要处理,补充 桌面上的快捷方式也不要删除 谢谢
求批处理脚本, 望大侠指点
最终效果是  桌面上 只有我的电脑 回收站 归档 (在归档里有20150101 20150102 20150102.。。。。。)  和 不是今天的文件,还有一些快捷方式。不知道我说明白了没有


望各位坛友不吝赐教!!!


1 补充如果假如归档之日期命名的文件夹中已有相同文件,请教如何不要覆盖,相同文件归档之后变成   名称-1  ,名称-2 ,名称-3 这样形式的

2 还有一种情况可能难处理 就是剪切到桌面上的文件,它还是以前的日期 请问是否有方法把剪切过来的文件也归档到以今天日期命名的文件夹之中了(如无法解决 可以不管剪切到桌面上的文件)
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 依山居 于 2015-11-21 21:05 编辑

没能力自己学就乖乖自己下个备份软件去。
Cobian Backup 免费开源,相当专业的文件备份软件。用过有好感。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

回复 1# erjnasrtnws
  1. @echo off & color 0d
  2. for /f "tokens=2,*" %%i in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Desktop"') do (
  3. set "desktop_dir=%%j"
  4. )
  5. ——————————————————————————————————————————————
  6. set "back_dir=d:\桌面备份\%date:~0,4%-%date:~5,2%桌面备份"
  7. set "back_dir1=%date:~0,4%-%date:~5,2%桌面备份"
  8. set "back_dir_favo=d:\桌面备份\%date:~0,4%-%date:~5,2%桌面备份\收藏夹"
  9. if not exist "d:\桌面备份" (md "d:\桌面备份")
  10. if not exist "%back_dir%" (md "%back_dir%")
  11. if not exist "%back_dir_favo%" (md "%back_dir_favo%")
  12. 1set "filesdate=%date:~0,4%%date:~5,2%%date:~8,2%"
  13. ——————————————————————————————————————————————
  14. robocopy "%desktop_dir%" "%back_dir%" /move /e /xf *.lnk
  15. robocopy "%userprofile%\Favorites" "d:\00beifen\备份\7Favorites" /mir /w:2 /r:2
  16. robocopy "%userprofile%\Favorites" "%back_dir_favo%" /mir /w:2 /r:2
  17. ——————————————————————————————————————————————
  18. for /f "delims=" %%a in ('dir /a-d /b /s "%desktop_dir%\*.*"') do (
  19. if "%%~xa" neq ".lnk" (del "%%a" /f /s /q)
  20. )
  21. for /f "delims=" %%b in ('dir /ad /b /s "%desktop_dir%\"^|sort /r') do (rd "%%b" /s /q)
  22. ——————————————————————————————————————————————
  23. (echo Set objShell=CreateObject^("WScript.Shell"^)
  24. echo DesktopPath=objShell.SpecialFolders^("Desktop"^)
  25. echo Set objlink=objShell.CreateShortcut^(DesktopPath ^& "\%back_dir1%.lnk"^)
  26. echo objlink.Hotkey="CTRL+Q"
  27. echo objlink.WindowStyle=3
  28. echo objlink.TargetPath="%back_dir%"
  29. echo objlink.Save
  30. )>"%temp%\mysendto.vbs"
  31. start /wait "" "%temp%\mysendto.vbs"
  32. cls
  33. ping 127.0.0.1 -n 5 >nul 2>nul
  34. del /q "%temp%\mysendto.vbs"
  35. ——————————————————————————————————————————————
  36. title 重启explorer资源管理器不关闭打开的文件夹
  37. 1set/p "p=即将重启 Explorer,"<nul & 1pause
  38. Call :_RestartExplorer
  39. echo 完成!
  40. 1pause
  41. cls
  42. ping 127.0.0.1 -n 5 >nul 2>nul
  43. start "" "%back_dir%"
  44. exit
  45. :: 重启 Explorer
  46. goto :eof
  47. :_RestartExplorer
  48.   ( echo Set objWsh = CreateObject^("WScript.Shell"^)
  49.   echo Set objShell = CreateObject^("Shell.Application"^)
  50.   echo For Each objWin In objShell.Windows
  51.   echo   If Instr^(LCase^(objWin.FullName^),"\explorer.exe"^) Then
  52.   echo     strURL = strURL ^& objWin.LocationURL ^& vbCrLf
  53.   echo   End If
  54.   echo Next
  55.   echo If strURL = "" Then WScript.Quit
  56.   echo strURL = Left^(strURL, Len^(strURL^)-Len^(vbCrLf^)^)
  57.   echo arrURL = Split^(strURL, vbCrLf^)
  58.   echo objWsh.run "cmd /c taskkill /f /im explorer.exe & start """" explorer", 0, True
  59.   echo For Each strURL In arrURL
  60.   echo   objShell.Explore strURL
  61.   echo Next )>"%temp%\RestartExplorer.vbs"
  62.   CScript //NoLogo "%temp%\RestartExplorer.vbs"
  63.   del /q /f "%temp%\RestartExplorer.vbs"
  64.   goto :eof
复制代码
1

评分人数

TOP

回复 1# erjnasrtnws


robocopy.exe自己网上下载。。。

TOP

本帖最后由 依山居 于 2015-11-21 23:41 编辑

回复 4# ygqiang


取当前用户桌面路径,从当前用户变量中取,代码量应该更加少。%HOMEPATH%\desktop 这样就行了。
  1. o( ̄▽ ̄)o 2015/11/21 周六23:40:29.02 <( ̄︶ ̄)>
  2. c:\>cd %HOMEPATH%\desktop
  3. o( ̄▽ ̄)o 2015/11/21 周六23:40:31.45 <( ̄︶ ̄)>
  4. c:\Users\xxx\Desktop>
复制代码
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

本帖最后由 terse 于 2015-11-25 11:17 编辑
  1. @if(0)==(0) echo off & CScript -NoLogo -E:JScript %0 & exit @end
  2. Date.prototype.Format = function (fmt) {
  3.     var o = {
  4.         "M+": this.getMonth() + 1,
  5.         "d+": this.getDate()
  6.     };
  7.     if (/(y+)/.test(fmt))
  8.         fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  9.     for (var k in o)
  10.         if (new RegExp("(" + k + ")").test(fmt))
  11.             fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  12.     return fmt;
  13. }
  14. var Shell = WScript.CreateObject("WScript.Shell");
  15. var fso = WScript.CreateObject("Scripting.FileSystemObject");
  16. var strDesktop = Shell.SpecialFolders("Desktop");
  17. var ff = strDesktop + "\\归档\\" + new Date().Format("yyyyMMdd");
  18. if(!fso.FolderExists(ff)){
  19.    fso.CreateFolder(ff);
  20. };
  21. var d = new Date();
  22. var Folder= fso.GetFolder(strDesktop);
  23. for(var e=new Enumerator(Folder.Files);!e.atEnd();e.moveNext()){
  24.    var f=e.item();
  25.    var t = parseInt(Math.round(d - f.Datecreated)/86400000);
  26.    if (t == 0) {
  27.     f.Move(ff+ "\\" + f.name);
  28.    }
  29. }
复制代码
1

评分人数

TOP

回复 5# 依山居


    你这个代码,xp/win7系统不通用吧?

TOP

回复 7# ygqiang


    开虚拟机验证了一下。有这个变量。确实不兼容,路径名是中文也就是cd %homepath%\桌面

win 7 是%homepath%\desktop
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

测试了一下可以这样写。
  1. cd /d "%USERPROFILE%\desktop"|| cd /d "%USERPROFILE%\桌面"
复制代码
1

评分人数

下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

再次谢谢3楼 6楼的热心指点

TOP

回复 3# ygqiang
大侠请问,你的代码XP可以使用吗?我在XP中使用发现桌面的文件的确没有了呵呵 这效果很好 正好想把快捷方式留在z桌面 可是在D盘的桌面备份文件夹里也是空的,不知道文件到哪里去了 !代码运行时,显示删除快捷方式错误《不知道是否对运行最终结果产生影响了???本人希望保留快捷方式不删除
求大侠指点

TOP

回复 6# terse
大侠你的代码无反应l!!!我在XP中运行的 需要注意些什么了??

TOP

回复 12# erjnasrtnws
已修改 代码第一行 echo off 后面 加个 &
  1. echo off & CScript...........
复制代码
1

评分人数

TOP

本帖最后由 WHY 于 2015-11-25 13:41 编辑
  1. @echo off
  2. set "s=HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
  3. for /f "tokens=2*" %%i in ('reg query "%s%" /v Desktop') do (
  4.     set "Desktop=%%j"
  5. )
  6. for /f %%i in ('wmic os get LocalDateTime^|findstr /b [0-9]') do (
  7.     set "Today=%%i"
  8. )
  9. set "Today=%Today:~0,8%"
  10. md "%Desktop%\归档\%Today%\" 2>nul
  11. set "MyPath=%Desktop:~2%\"
  12. set wql=where "drive='%Desktop:~0,2%' and path='%MyPath:\=\\%'"
  13. for /f "tokens=1*" %%i in ('wmic datafile %wql% get creationdate^,name^|findstr /b %Today%')do (
  14.     for /f "delims=" %%j in ("%%j") do (
  15.         if /i not "%%~fj" == "%~f0" move "%%~fj" "%Desktop%\归档\%Today%\"
  16.     )
  17. )
  18. pause
复制代码
1

评分人数

TOP

本帖最后由 erjnasrtnws 于 2015-11-25 14:14 编辑

回复 14# WHY

谢谢  刚刚试了效果很好
望大侠改进!!!!!
1请问如何保留桌面的快捷方式了??? 希望把快捷方式图标留在桌面上,求指点
2,如何实现和3楼一样的效果,就是把不是今天新建的文件(是从其它盘拷贝到桌面上的不是今天的文件)也可以放入归档之中

如能实现那就对我来说相当完美了,我会终身珍藏的

本人能力低微,望大侠不吝赐教!!!!谢谢

TOP

返回列表