[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 WHY 于 2017-4-20 14:44 编辑
  1. @if(0)==(0) echo off
  2. dir /b /s *:*.pdf | cscript //nologo //e:jscript "%~f0"
  3. rem for /d %%i in (*) do rd "%%i" 2>nul
  4. pause & goto :EOF
  5. @end
  6. var fso = new ActiveXObject('Scripting.FileSystemObject');
  7. var str = WSH.StdIn.ReadAll();
  8. var reg = /.*\\([0-9]{6})([^\\]*):([0-9]{4})[^\r\n\\]*/g;
  9. var map = [], arr = [];
  10. while(arr = reg.exec(str)){
  11.     if(!map[arr[1]]) map[arr[1]] = [];
  12.     map[arr[1]].push([arr[0], arr[2], arr[3]]);
  13. }
  14. for(var key in map){
  15.     map[key].sort(function(a,b){ return b[2]-a[2] }); //以4位数年份排序
  16.     var fd = key + map[key][0][1];
  17.     if(!fso.FolderExists(fd)) fso.CreateFolder(fd);   //创建文件夹
  18.     for(var i=0; i<map[key].length; i++) fso.GetFile(map[key][i][0]).Move(fd + '\\'); //移动文件
  19. }
复制代码

TOP

回复 7# taofan712


    文件名中应该不能包含半角冒号的,即便是 NTFS 流文件,单凭 dir + for 也不可能显示出来的吧

TOP

  1. @echo off & setlocal enabledelayedexpansion
  2. if "%~1" == "arg" (
  3.     for /r %%i in (*:*年*.pdf) do (
  4.         for /f "tokens=1,2 delims=:年" %%j in ("%%~ni") do (
  5.             set "s=%%j"
  6.             echo;!s:~0,6!/%%k/!s:~6!/%%i
  7.         )
  8.     )
  9. ) else (
  10.     set "s="
  11.     for /f "tokens=1,3* delims=/" %%i in ('"%~f0" arg ^| sort /r ') do (
  12.         if not "%%i" == "!s!" set "fd=%%i%%j"
  13.         set "s=%%i"
  14.         md "!fd!"
  15.         move "%%k" "!fd!\"
  16.     ) 2>nul
  17.     for /d %%i in (*) do rd "%%i" 2>nul
  18.     pause
  19. )
复制代码

TOP

返回列表