• 习近平要求把这项工作作为重大政治任务 2019-03-24
  • 充分发挥重要平台和有效载体作用 以特色小镇建设促进乡村振兴 2019-03-18
  • 脸每天都洗,但你真的洗对了吗? 2019-03-18
  • 港珠澳大桥珠海口岸停车场智慧停车系统启用在即 2019-03-14
  • 以实际行动诠释忠诚 以实干实政维护核心 2019-03-14
  • 天津市津南区严打校园周边“五毛食品” 2019-03-11
  • 设计众议院:新时代消费观念造就的全新第八代凯美瑞 2019-03-11
  • 补时绝杀!英格兰2-1突尼斯 凯恩梅开二度 2019-03-09
  • 我和党报党网有个约会在线征集活动 2019-03-09
  • 吃饭刷脸 还有多远? 2019-03-07
  • 中共中央文件选集一(1921―1925) 2019-03-05
  • 《中国气候变化蓝皮书》:年平均气温显著上升 2019-03-05
  • 这样的银行就应该倒闭 2019-03-01
  • 有兴趣的朋友可以去看咱的《机器人普及时代的生产关系》…… 2019-03-01
  • 中国欲举办2030年世界杯?网友调侃:真可笑 2019-02-26
  • 批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
    [批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
    返回列表 发帖

    广东十一选五开奖视频下载:【已解决】20元求助-批处理按照文件内容移动文件

    本帖最后由 lxh623 于 2018-11-10 14:36 编辑

    E:\duanwenxue文件夹下面有很多子文件夹。
    有几十万html,大多数html源代码有一句
    <div class="breadcrumb">当前位置:<a href='/'>短篇原创文学</a>><a href='/yuju/'>经典语句</a>><a href='/yuju/yulu/'>经典语录</a>>文章内容</div>

    我想,提取所有文件名以及它的这一句,然后,如果文件已经在文件夹路径(比如E:\duanwenxue\yuju\yulu\新建文件夹,或者任何名称的三级或四级子文件夹)下面,就不动。不然移动文件到该路径(这里是E:\duanwenxue\yuju\yulu\)。移动如果与目的地文件重名,就删除文件。

    如果源代码没有这一句,就忽略。如果多于一句,也忽略(有些合并的html)。如果这里代码只有一级就放在一级。比如没有yulu,只有yuju。

    附件: 您需要登录才可以下载或查看附件。没有帐号?注册
    本帖最后由 WHY 于 2018-11-12 11:25 编辑

    分两个脚本,第一个脚本 test.bat,第二个脚本 test.ps1,
    两个脚本存放于 E:\duanwenxue 目录下。
    双击 test.bat 运行。
    Test.bat
    1. @echo off
    2. PowerShell -exec ByPass -f Test.ps1
    3. pause
    复制代码
    Test.ps1
    1. $reg = '(?i)<div class="(?:sigle-)?breadcrumb">当前位置:\s*<a href=''/''>短篇原创文学</a>>.*<a href=''/([^'']+)/''>[^<>]*</a>';
    2. $MyPath = $MyInvocation.MyCommand.Path -replace '[^\\]+$';
    3. ForEach ($file In (dir -Literal $MyPath -Filter *.html -Recurse)) {
    4.     $s = [IO.File]::ReadAllText($file.FullName, [Text.Encoding]::Default);
    5.     $m = [regex]::Matches($s, $reg);
    6.     $arr = @($m | %{$_.Groups[1].Value});
    7.     If ($arr.Count -ne 1) { continue; }
    8.     $fd = $MyPath + ($arr[0] -replace '/', '\');
    9.     If ($file.FullName -NotLike ($fd + '\*')) {
    10.         If (!(Test-Path -Literal $fd)) { $null = md $fd; }
    11.         move -Literal $file.FullName -Dest $fd -Force;
    12.     }
    13. }
    复制代码
    看了下,短文周刊 网页不太一样,多了个 “sigle-”。
    1

    评分人数

    TOP

    有些二级不是“经典语句”,可以吗?

    TOP

    回复 3# lxh623


        请举例说明:有些二级不是“经典语句”

    TOP

    本帖最后由 lxh623 于 2018-11-9 19:16 编辑

    东西来自于网站,www.duanwenxue.com/ 。
    我的同级文件夹有二三十个,biaoyu、diary、duanju、duanwen、duanxin、gushi、huayu、jingdian、jingdianyulu、jingpin、jingxuan、juzi、kouhao、mingyan、qianming、qinggan、raokouling、rizhi、sanwen、shanggan、shige、wangming、yanjianggao、yuju、yulu、zhengwen、zhoukan、zuowen 。网址加上这些,可以访问。
    麻烦您!

    TOP

    保存到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

    回复 3# lxh623


        2楼 Test.ps1 第一行改成:
    1. $reg = '(?i)<div class="breadcrumb">当前位置:<a href=''/''>短篇原创文学</a>><a href=''/[^'']+''>[^<>]*</a>><a href=''(/[^'']+)''>[^<>]*</a>>';
    复制代码
    试下。

    TOP

    本帖最后由 lxh623 于 2018-11-10 09:10 编辑

    回复 6# flashercs
    这个也是移动了很多,创建了不少新的文件夹,非常感谢。
    有一个问题,有些四级五级目录的文件夹下文件没有移动。比如,E:\duanwenxue\gushi\guigushi\新建文件夹1 。

    TOP

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

    TOP

    回复 8# lxh623


        你这与顶楼描述的自相矛盾:
    (比如E:\duanwenxue\yuju\yulu\新建文件夹,或者任何名称的三级或四级子文件夹)下面,就不动


    2楼改了下。

    TOP

    回复 10# WHY
    不是的,是应该移动的没有被移动。

    TOP

    谢谢两位,大体可以了。

    TOP

    返回列表
  • 习近平要求把这项工作作为重大政治任务 2019-03-24
  • 充分发挥重要平台和有效载体作用 以特色小镇建设促进乡村振兴 2019-03-18
  • 脸每天都洗,但你真的洗对了吗? 2019-03-18
  • 港珠澳大桥珠海口岸停车场智慧停车系统启用在即 2019-03-14
  • 以实际行动诠释忠诚 以实干实政维护核心 2019-03-14
  • 天津市津南区严打校园周边“五毛食品” 2019-03-11
  • 设计众议院:新时代消费观念造就的全新第八代凯美瑞 2019-03-11
  • 补时绝杀!英格兰2-1突尼斯 凯恩梅开二度 2019-03-09
  • 我和党报党网有个约会在线征集活动 2019-03-09
  • 吃饭刷脸 还有多远? 2019-03-07
  • 中共中央文件选集一(1921―1925) 2019-03-05
  • 《中国气候变化蓝皮书》:年平均气温显著上升 2019-03-05
  • 这样的银行就应该倒闭 2019-03-01
  • 有兴趣的朋友可以去看咱的《机器人普及时代的生产关系》…… 2019-03-01
  • 中国欲举办2030年世界杯?网友调侃:真可笑 2019-02-26