找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17429|回复: 3

[文本处理] 批处理如何查询包含此文件名的文件将其拷贝到新文件夹?

[复制链接]
发表于 2021-11-28 13:54:08 | 显示全部楼层 |阅读模式
现在D盘中有若干个文件夹, 每个文件夹中都有很多录音文件,其中命名格式为“年月日-手机号-坐席号”,其中手机号的位置不固定,现在整理出需要拷贝出的录音的手机号码文本(一行一个号码),执行命令 如果查询到则拷贝到D:/已筛选中,如果没有查询到就在D:/未查询到.txt 中记录该号码(也要一行一个号码)。
 楼主| 发表于 2021-11-28 13:57:44 | 显示全部楼层
@echo off
cd /d "D:\"
echo 正在搜索,请稍后...
for /f %%a in (号码.txt) do if exist "*%%a*.*" move "*%%a*.*" "D:\已筛选"

这个是我现在用的但是看了一下 有很多问题 第一个只能查D盘根目录下的 子目录下的都不能查询 另一个问题就是 不会记录没有查到的
发表于 2021-11-28 16:40:23 | 显示全部楼层
  1. @echo off
  2. cd /d "D:"
  3. set filterDir="D:\已筛选"
  4. set nofound="D:\未查询到.txt"
  5. echo 正在搜索,请稍后...

  6. for /f %%a in (号码.txt) do (
  7.   set flag=
  8.   for /f "delims=" %%A in ('dir /a-d /b /s "*%%a*.*"') do (
  9.     if /i not "%%~dpA"==%filterDir% (
  10.       move /y "%%~fA" %filterDir%
  11.       set flag=1
  12.     )
  13.   )
  14.   if not defined flag (
  15.     >>%nofound% echo %%a
  16.   )
  17. )
复制代码
发表于 2021-11-28 18:10:55 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-11-29 09:10 编辑

未测试。这种情况最好不要将文件拷贝到与源文件夹相同目录,以免相互干扰(我把拷贝文件夹放到了桌面):
  1. @echo off
  2. cd /d "D:"
  3. set "DesFolder=%USERPROFILE%\desktop\已筛选"
  4. md "%DesFolder%"
  5. setlocal enabledelayedexpansion
  6.     for /f "delims=" %%a in ('dir /b /s /ad') do (
  7.     set /a n+=1
  8.     set #!n!=%%a
  9. )
  10. (for /f "delims=" %%i in (a.txt) do (
  11.     set m=
  12.     for /l %%j in (1,1,%n%) do (
  13.         if exist "!#%%j!\*-%%i-*.*" (
  14.             move "!#%%j!\*-%%i-*.*" "%DesFolder%">nul
  15.             set m=true
  16.         )
  17.     )
  18.     if not defined m echo,%%i
  19. ))>"未查询到.txt"
  20. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 17:58 , Processed in 0.032193 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表