标题: [文本处理] 批处理如何查询包含此文件名的文件将其拷贝到新文件夹? [打印本页]
作者: 断桥残雪 时间: 2021-11-28 13:54 标题: 批处理如何查询包含此文件名的文件将其拷贝到新文件夹?
现在D盘中有若干个文件夹, 每个文件夹中都有很多录音文件,其中命名格式为“年月日-手机号-坐席号”,其中手机号的位置不固定,现在整理出需要拷贝出的录音的手机号码文本(一行一个号码),执行命令 如果查询到则拷贝到D:/已筛选中,如果没有查询到就在D:/未查询到.txt 中记录该号码(也要一行一个号码)。
作者: 断桥残雪 时间: 2021-11-28 13:57
@echo off
cd /d "D:\"
echo 正在搜索,请稍后...
for /f %%a in (号码.txt) do if exist "*%%a*.*" move "*%%a*.*" "D:\已筛选"
这个是我现在用的但是看了一下 有很多问题 第一个只能查D盘根目录下的 子目录下的都不能查询 另一个问题就是 不会记录没有查到的
作者: flashercs 时间: 2021-11-28 16:40
- @echo off
- cd /d "D:\"
- set filterDir="D:\已筛选\"
- set nofound="D:\未查询到.txt"
- echo 正在搜索,请稍后...
-
- for /f %%a in (号码.txt) do (
- set flag=
- for /f "delims=" %%A in ('dir /a-d /b /s "*%%a*.*"') do (
- if /i not "%%~dpA"==%filterDir% (
- move /y "%%~fA" %filterDir%
- set flag=1
- )
- )
- if not defined flag (
- >>%nofound% echo %%a
- )
- )
复制代码
作者: qixiaobin0715 时间: 2021-11-28 18:10
本帖最后由 qixiaobin0715 于 2021-11-29 09:10 编辑
未测试。这种情况最好不要将文件拷贝到与源文件夹相同目录,以免相互干扰(我把拷贝文件夹放到了桌面):- @echo off
- cd /d "D:\"
- set "DesFolder=%USERPROFILE%\desktop\已筛选"
- md "%DesFolder%"
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b /s /ad') do (
- set /a n+=1
- set #!n!=%%a
- )
- (for /f "delims=" %%i in (a.txt) do (
- set m=
- for /l %%j in (1,1,%n%) do (
- if exist "!#%%j!\*-%%i-*.*" (
- move "!#%%j!\*-%%i-*.*" "%DesFolder%">nul
- set m=true
- )
- )
- if not defined m echo,%%i
- ))>"未查询到.txt"
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |