标题: [文件操作] 求助!!!批处理分类文件管理该怎么弄 [打印本页]
作者: 627923302@qq.co 时间: 2023-4-5 09:55 标题: 求助!!!批处理分类文件管理该怎么弄
- @echo off
- rem 根据从文件名中指定字符串/关键词开始截取指定位数的字符来移动文件到对应文件夹
- cd /d "%~dp0"
- set "keyword=板件料单"
- set "n=4"
- powershell -NoProfile -ExecutionPolicy bypass ^
- $files=@(dir^|?{($_ -is [System.IO.FileInfo]) -and ($_.Name -ne '%~nx0')});^
- for($i=0;$i -lt $files.length;$i++){^
- $n=$files[$i].BaseName.IndexOf('%keyword%');^
- if($n -ge 0){^
- $s=$files[$i].BaseName.Substring($n);^
- if($s.length -ge %n%){^
- $kw=$s.Substring(0,%n%);^
- [void](md $kw -force);^
- $txt=$files[$i].Directory.FullName+'\'+$kw+'\%n%.txt';^
- out-file -file $txt -input $kw -enc Default;^
- write-host ($files[$i].Name+' --^> '+$kw);^
- mv -liter $files[$i].FullName ($files[$i].Directory.FullName+'\'+$kw);^
- };^
- };^
- }
- set "keyword=报价单"
- set "n=3"
- powershell -NoProfile -ExecutionPolicy bypass ^
- $files=@(dir^|?{($_ -is [System.IO.FileInfo]) -and ($_.Name -ne '%~nx0')});^
- for($i=0;$i -lt $files.length;$i++){^
- $n=$files[$i].BaseName.IndexOf('%keyword%');^
- if($n -ge 0){^
- $s=$files[$i].BaseName.Substring($n);^
- if($s.length -ge %n%){^
- $kw=$s.Substring(0,%n%);^
- [void](md $kw -force);^
- $txt=$files[$i].Directory.FullName+'\'+$kw+'\%n%.txt';^
- out-file -file $txt -input $kw -enc Default;^
- write-host ($files[$i].Name+' --^> '+$kw);^
- mv -liter $files[$i].FullName ($files[$i].Directory.FullName+'\'+$kw);^
- };^
- };^
- }
- set "keyword=配件料单"
- set "n=4"
- powershell -NoProfile -ExecutionPolicy bypass ^
- $files=@(dir^|?{($_ -is [System.IO.FileInfo]) -and ($_.Name -ne '%~nx0')});^
- for($i=0;$i -lt $files.length;$i++){^
- $n=$files[$i].BaseName.IndexOf('%keyword%');^
- if($n -ge 0){^
- $s=$files[$i].BaseName.Substring($n);^
- if($s.length -ge %n%){^
- $kw=$s.Substring(0,%n%);^
- [void](md $kw -force);^
- $txt=$files[$i].Directory.FullName+'\'+$kw+'\%n%.txt';^
- out-file -file $txt -input $kw -enc Default;^
- write-host ($files[$i].Name+' --^> '+$kw);^
- mv -liter $files[$i].FullName ($files[$i].Directory.FullName+'\'+$kw);^
- };^
- };^
- }
-
- del /a /s /q *.txt
- del /a /s /q *.xml
-
- cd /d "%~dp0"
- set "newfolder=模型"
- if not exist "%newfolder%" md "%newfolder%"
- for %%a in (bmp) do (
- if exist *.%%a move /y *.%%a "%newfolder%\"
- )
-
- set "newfolder=模型"
- if not exist "%newfolder%" md "%newfolder%"
- for %%a in (bmp) do (
- if exist *.%%a move /y *.%%a "%newfolder%\"
- )
- 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 编辑
你既然已经预先设定了关键词,就没有必要再从文件名中提取关键词来建文件夹了- cd /d "%~dp0"
- set "keyword0=MY BL"
- set "keyword1=板件料单 报价单 配件料单"
-
- for /f "delims=" %%a in ('dir /b /a-d ^| findstr "%keyword0%"') do xcopy /y "%%a" "keyword0\"
- for %%i in (%keyword1%) do (
- md "%%i"
- for /f "delims=" %%a in ('dir /b /a-d ^| findstr /c:"%%i"') do move /y "%%a" "%%i\"
- )
-
- if not exist "模型" md "模型"
- if exist *.bmp move /y *.bmp "模型\"
- 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://www.bathome.net/) |
Powered by Discuz! 7.2 |