Board logo

标题: [文件操作] 求助!!!批处理分类文件管理该怎么弄 [打印本页]

作者: 627923302@qq.co    时间: 2023-4-5 09:55     标题: 求助!!!批处理分类文件管理该怎么弄

  1. @echo off
  2. rem 根据从文件名中指定字符串/关键词开始截取指定位数的字符来移动文件到对应文件夹
  3. cd /d "%~dp0"
  4. set "keyword=板件料单"
  5. set "n=4"
  6. powershell -NoProfile -ExecutionPolicy bypass ^
  7.     $files=@(dir^|?{($_ -is [System.IO.FileInfo]) -and ($_.Name -ne '%~nx0')});^
  8.     for($i=0;$i -lt $files.length;$i++){^
  9.         $n=$files[$i].BaseName.IndexOf('%keyword%');^
  10.         if($n -ge 0){^
  11.             $s=$files[$i].BaseName.Substring($n);^
  12.             if($s.length -ge %n%){^
  13.                 $kw=$s.Substring(0,%n%);^
  14.                 [void](md $kw -force);^
  15.                 $txt=$files[$i].Directory.FullName+'\'+$kw+'\%n%.txt';^
  16.                 out-file -file $txt -input $kw -enc Default;^
  17.                 write-host ($files[$i].Name+' --^> '+$kw);^
  18.                 mv -liter $files[$i].FullName ($files[$i].Directory.FullName+'\'+$kw);^
  19.             };^
  20.         };^
  21.     }
  22. set "keyword=报价单"
  23. set "n=3"
  24. powershell -NoProfile -ExecutionPolicy bypass ^
  25.     $files=@(dir^|?{($_ -is [System.IO.FileInfo]) -and ($_.Name -ne '%~nx0')});^
  26.     for($i=0;$i -lt $files.length;$i++){^
  27.         $n=$files[$i].BaseName.IndexOf('%keyword%');^
  28.         if($n -ge 0){^
  29.             $s=$files[$i].BaseName.Substring($n);^
  30.             if($s.length -ge %n%){^
  31.                 $kw=$s.Substring(0,%n%);^
  32.                 [void](md $kw -force);^
  33.                 $txt=$files[$i].Directory.FullName+'\'+$kw+'\%n%.txt';^
  34.                 out-file -file $txt -input $kw -enc Default;^
  35.                 write-host ($files[$i].Name+' --^> '+$kw);^
  36.                 mv -liter $files[$i].FullName ($files[$i].Directory.FullName+'\'+$kw);^
  37.             };^
  38.         };^
  39.     }
  40. set "keyword=配件料单"
  41. set "n=4"
  42. powershell -NoProfile -ExecutionPolicy bypass ^
  43.     $files=@(dir^|?{($_ -is [System.IO.FileInfo]) -and ($_.Name -ne '%~nx0')});^
  44.     for($i=0;$i -lt $files.length;$i++){^
  45.         $n=$files[$i].BaseName.IndexOf('%keyword%');^
  46.         if($n -ge 0){^
  47.             $s=$files[$i].BaseName.Substring($n);^
  48.             if($s.length -ge %n%){^
  49.                 $kw=$s.Substring(0,%n%);^
  50.                 [void](md $kw -force);^
  51.                 $txt=$files[$i].Directory.FullName+'\'+$kw+'\%n%.txt';^
  52.                 out-file -file $txt -input $kw -enc Default;^
  53.                 write-host ($files[$i].Name+' --^> '+$kw);^
  54.                 mv -liter $files[$i].FullName ($files[$i].Directory.FullName+'\'+$kw);^
  55.             };^
  56.         };^
  57.     }
  58. del /a /s /q *.txt
  59. del /a /s /q *.xml
  60. cd /d "%~dp0"
  61. set "newfolder=模型"
  62. if not exist "%newfolder%" md "%newfolder%"
  63. for %%a in (bmp) do (
  64.     if exist *.%%a move /y *.%%a "%newfolder%\"
  65. )
  66. set "newfolder=模型"
  67. if not exist "%newfolder%" md "%newfolder%"
  68. for %%a in (bmp) do (
  69.     if exist *.%%a move /y *.%%a "%newfolder%\"
  70. )
  71. echo;移动已完成!
复制代码
这是现在在用的代码,目前遇到了一个新的问题 ,生成的文件里面有一些是包含MY、BL、等等之类的 需要单独建立一个文件夹把他们放进去,这一块不知道该怎么添加了  求助各位大佬
作者: 627923302@qq.co    时间: 2023-4-5 09:55

[img][img][/img][/img]
作者: buyiyang    时间: 2023-4-5 14:02

本帖最后由 buyiyang 于 2023-4-5 15:32 编辑

你既然已经预先设定了关键词,就没有必要再从文件名中提取关键词来建文件夹了
  1. cd /d "%~dp0"
  2. set "keyword0=MY BL"
  3. set "keyword1=板件料单 报价单 配件料单"
  4. for /f "delims=" %%a in ('dir /b /a-d ^| findstr "%keyword0%"') do xcopy /y "%%a" "keyword0\"
  5. for %%i in (%keyword1%) do (
  6.       md "%%i"
  7.       for /f "delims=" %%a in ('dir /b /a-d ^| findstr /c:"%%i"') do move /y "%%a" "%%i\"
  8. )
  9. if not exist "模型" md "模型"
  10. if exist *.bmp move /y *.bmp "模型\"
  11. echo,移动已完成!&pause>nul
复制代码

作者: terse    时间: 2023-4-5 14:30

三个关键词 每个关键词单独一段代码处理 太浪费了吧 可以放在一个代码段处理
另外 文件里面包含MY、BL  ...  是文件内容的话 试试正则匹配
作者: qixiaobin0715    时间: 2023-4-5 15:47

本帖最后由 qixiaobin0715 于 2023-4-5 15:49 编辑

回复 1# 627923302@qq.co
新问题可以使用:findstr /m
你不需要帖一堆代码,谁又会费半天劲看你东拼西凑代码呢,把你的需求详细的表达清楚即可。




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