标题: [文件操作] 【已解决】请问目录下同名的文件,不分后缀,如何移动到目录下同名文件夹? [打印本页]
作者: 1139054012 时间: 2023-3-28 15:07 标题: 【已解决】请问目录下同名的文件,不分后缀,如何移动到目录下同名文件夹?
本帖最后由 1139054012 于 2023-3-28 15:58 编辑
目录下有上百个文件,也有好几层子目录,文件名简体繁体日文,各种符号也可能都有,怎样能判断这么多不同类型文件名,并移动到同名文件夹?
因为文件名太多,这里举例几个简单的,实际英文,中文,日文全有- 张三.txt
- 张三01.txt
- 张三 02.txt
- 张三-01.txt
- 张三.01.txt
- 张三,01.txt
- 张三,01.txt
- 张三!01.txt
- aaa张三.txt
- aaa张三01.txt
- aaa张三02.txt
- aaa张三-01.txt
- aaa张三.01.txt
- aaa张三,01.txt
- aaa张三,01.txt
- aaa张三!01.txt
- (102211)张三.txt
- (102211)张三![0012].txt
- 【102211】张三。03[001211].txt
- 【102211】张三,01[001220].txt
- 【102211】张三,02[001212].txt
- live o.txt
- live o .txt
- live o01.txt
- live o02.txt
- live o 01.txt
- live o 02.txt
- live-01.txt
- live.01.txt
- live,01.txt
- live,01.txt
- live!01.txt
- 01.live o.txt
- 01.live o01.txt
- 01-live o02.txt
- 01.live o-01.txt
- 01 live o.01.txt
- 01 live o,01.txt
- 01 live o,01.txt
- 01live o!01.txt
- (102211)live o.txt
- (102211)live o![0012].txt
- 【102211】live o。03[0012].txt
- 【102211】live o,01[0012].txt
- 【102211】live o,02[0012].txt
复制代码
PS: 这里的张三和 live o只是随便起的名,实际这里有可能是简体,有可能繁体,有可能英文,有可能日文,名称长度也不同,有可能包含01,02也有的不包含...
以上文件,有可能在当前目录下,也有可能在子目录下,后缀有可能pdf,有可能xls,xlsx等,如何能批量移动到名为 张三 和 live o的文件夹下呢?
作者: qixiaobin0715 时间: 2023-3-28 15:22
本帖最后由 qixiaobin0715 于 2023-3-28 15:26 编辑
批处理文件另存为ANSI编码:- @echo off
- set Folder="张三" "live o"
- for %%i in (%Folder%) do (
- md %%i
- for /f "delims=" %%j in ('dir /s /b /a-d "*%%~i*.*"') do move "%%j" "%%~i\"
- )
- pause
复制代码
作者: 1139054012 时间: 2023-3-28 15:42
回复 2# qixiaobin0715
感谢回复, 测试了下指定关键字可以批量移动指定同名文件夹,请问下如果没法单独指定关键字该如何批量移动同名文件夹,因为目录下上百个文件,关键字也上百个,如何能不需要指定关键字也能批量移动同名文件夹呢?
作者: qixiaobin0715 时间: 2023-3-28 15:46
本帖最后由 qixiaobin0715 于 2023-3-28 15:51 编辑
你没有表达清楚,不指定关键字如何知道哪些是关键字呢?
退一步来说要移动文件到文件夹,那么这种文件夹是在当前文件夹下还是有可能会是下一层文件夹?
作者: Batcher 时间: 2023-3-28 15:48
回复 1# 1139054012
有个逻辑问题你得先想清楚:
【张三丰】会不会被错误的移动到【张三】目录下?
我也是举个例子,真实情况你懂的。
作者: 1139054012 时间: 2023-3-28 15:56
回复 5# Batcher
感谢提醒, 确实,模糊搜索这个问题没法避免,因为我常用关键字搜索,有的确实得缩短或延长字符才能找到,关于如何定义关键词和筛选,我有些思路了,打算先把文件名批量先导出表格,通过表格手动筛选遍,再用bat来批量移动
作者: qixiaobin0715 时间: 2023-3-28 16:04
降序排列可以避免“张三丰”“张三”的问题。
作者: terse 时间: 2023-3-28 16:11
感觉模糊搜索行不通
作者: buyiyang 时间: 2023-3-29 08:49
回复 6# 1139054012
这个可以帮助找到关键词- #@&cls&powershell -sta "gc '%~f0'|out-string|iex"&pause&exit
- $files = Get-ChildItem -Recurse -File
- Add-Type @"
- using System;
- namespace CS
- {
- public static class LCS
- {
- public static string lcs(string a, string b)
- {
- var lengths = new int[a.Length, b.Length];
- int greatestLength = 0;
- string output = "";
- for (int i = 0; i < a.Length; i++)
- {
- for (int j = 0; j < b.Length; j++)
- {
- if (a[i] == b[j])
- {
- lengths[i, j] = i == 0 || j == 0 ? 1 : lengths[i - 1, j - 1] + 1;
- if (lengths[i, j] > greatestLength)
- {
- greatestLength = lengths[i, j];
- output = a.Substring(i - greatestLength + 1, greatestLength);
- }
- }
- else
- {
- lengths[i, j] = 0;
- }
- }
- }
- return output;
- }
- }
- }
- "@
-
- $lcsList = @()
- for ($i = 0; $i -lt $files.Count; $i++) {
- for ($j = $i + 1; $j -lt $files.Count; $j++) {
- $lcs = [CS.LCS]::lcs($files[$i].BaseName,$files[$j].BaseName)
- if ($lcsList -notcontains $lcs) {
- $lcsList += $lcs
- Write-Output "$lcs"
- }
- }
- }
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |