[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
保存到E:\duanwenxue\moveFiles.js
  1. var fso = new ActiveXObject('Scripting.FileSystemObject'),
  2.     shell = new ActiveXObject('WScript.Shell'),
  3.     curDir,
  4.     sSearch = '<div class="breadcrumb">当前位置:<a href=\'/\'>短篇原创文学</a>.*</div>',
  5.     findstrStringFile = 'SearchStrings.txt',
  6.     findstrResultFile = 'SearchResult.txt',
  7.     logFile = 'moveHtml.log',
  8.     ts,
  9.     tsLog,
  10.     nExitCode,
  11.     sPrevFile,
  12.     sPrevDestFolder,
  13.     sCurrFile,
  14.     aFilePath,
  15.     nMultiCount,
  16.     reFilePath = /^([^:]+):<div class="breadcrumb">当前位置:(?=<a href='\/'>短篇原创文学<\/a>>)(?:<a href='([^']+)'>[^<]+<\/a>>)+[^<]+<\/div>/i;
  17. curDir = shell.CurrentDirectory = fso.GetParentFolderName(WScript.ScriptFullName);
  18. try {
  19.     tsLog = fso.OpenTextFile(logFile, 8, true, -2);
  20.     tsLog.WriteLine(new Date().toLocaleString());
  21. } catch (e) {
  22.     WScript.Quit(11);
  23. }
  24. try {
  25.     ts = fso.OpenTextFile(findstrStringFile, 2, true, -2);
  26.     ts.WriteLine(sSearch);
  27.     ts.Close();
  28. } catch (e) {
  29.     WScript.Quit(12);
  30. }
  31. shell.Run('%comspec% /c "pushd "' + curDir + '"&findstr.exe /irsg:"' + findstrStringFile + '" *.html >"' + findstrResultFile + '""', 0, true);
  32. try {
  33.     ts = fso.OpenTextFile(findstrResultFile, 1, false, -2);
  34. } catch (e) {
  35.     WScript.Quit(13);
  36. }
  37. sPrevFile = '';
  38. nMultiCount = NaN;
  39. sPrevDestFolder = curDir;
  40. while (!ts.AtEndOfStream) {
  41.     aFilePath = ts.ReadLine().match(reFilePath);
  42.     if (!aFilePath) continue;
  43.     sCurrFile = aFilePath[1];
  44.     if (sCurrFile === sPrevFile) {
  45.         nMultiCount += 1;
  46.     } else {
  47.         if (nMultiCount === 0) {
  48.             if (!fso.FolderExists(sPrevDestFolder)) {
  49.                 shell.Run('%comspec% /c md "' + sPrevDestFolder + '"', 0, true)
  50.             }
  51.             if (!fso.FileExists(sPrevDestFolder + '\\' + sPrevFile.replace(/.*\\/, ''))) {
  52.                 try {
  53.                     // fso.CopyFile(sPrevFile, sPrevDestFolder + '\\', false);
  54.                     // fso.DeleteFile(sPrevFile, true);
  55.                     fso.MoveFile(sPrevFile, sPrevDestFolder + '\\');
  56.                 } catch (e) {
  57.                     tsLog.WriteLine('Moveing ' + sPrevFile + ' failed.');
  58.                 }
  59.             }
  60.         } else {
  61.             nMultiCount = 0;
  62.         }
  63.         sPrevFile = sCurrFile;
  64.         sPrevDestFolder = fso.GetAbsolutePathName('.' + aFilePath[2]);
  65.     }
  66. }
  67. if (nMultiCount === 0) {
  68.     if (!fso.FolderExists(sPrevDestFolder)) {
  69.         shell.Run('%comspec% /c md "' + sPrevDestFolder + '"', 0, true)
  70.     }
  71.     if (!fso.FileExists(sPrevDestFolder + '\\' + sPrevFile.replace(/.*\\/, ''))) {
  72.         try {
  73.             // fso.CopyFile(sPrevFile, sPrevDestFolder + '\\', false);
  74.             // fso.DeleteFile(sPrevFile, true);
  75.             fso.MoveFile(sPrevFile, sPrevDestFolder + '\\');
  76.         } catch (e) {
  77.             tsLog.WriteLine('Moveing ' + sPrevFile + ' failed.');
  78.         }
  79.     }
  80. }
  81. ts.Close();
  82. tsLog.Close();
  83. fso.DeleteFile(findstrStringFile);
  84. fso.DeleteFile(findstrResultFile);
  85. WScript.Echo('Done');
  86. WScript.Quit(0);
复制代码

TOP

回复 8# lxh623
肯定是目标目录下已经存在同名文件了,本着 不删除 不覆盖 的原则操作,比较安全.
自己查看下目标目录就知道.

TOP

返回列表