Board logo

标题: [文件操作] 批处理如何将文件按名称移动汇总至不同的文件夹? [打印本页]

作者: pzr0254    时间: 2017-9-27 18:04     标题: 批处理如何将文件按名称移动汇总至不同的文件夹?

请教各位老师:
    现有表格文件若干,命名为4位数字+不同名称,如1010天气不错、1010阳光明媚、1010风和日丽、1020天气糟糕、1020狂风暴雨、1020电闪雷鸣等等,现想根据文件命名前4位数字进行归档,将前4位数字相同的文件移至同一新建文件夹中,此文件夹使用此4位数字命名,如1010文件夹里面包括1010天气不错、1010阳光明媚、1010风和日丽;1020文件夹里面包括1020天气糟糕、1020狂风暴雨、1020电闪雷鸣。
    由于此类文件数量较多,手工处理十分低效,还请大师们鼎力相助,谢谢!
作者: pzr0254    时间: 2017-10-11 08:57

难道无法实现么,求高手们帮忙
作者: zhanglei1371    时间: 2017-10-12 16:46

  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "usebackq" %%i in (`dir /a /b /s ^|findstr ^^[0-9][0-9][0-9][0-9].*$`) do (
  3. set str=%%~ni
  4. set d=!str:~0,4!
  5. md !d!>nul 2>nul & move %%i !d!
  6. )
  7. pause
复制代码

作者: pzr0254    时间: 2017-10-24 15:49

感谢高手指点,不过测试没有成功,不知还有哪些需要注意或自行修改的信息?
作者: Blitz    时间: 2017-10-24 16:04

本帖最后由 Blitz 于 2017-10-24 16:06 编辑

回复 4# pzr0254


    我都测试成功了,你没成功可能是你的描述不准确
作者: pzr0254    时间: 2017-10-25 11:19

确实,我按描述内容测试也成功了,应该是我实际处理文件名称或数量与代码有些不符,我试着自己调整一下,多谢二位指点,多谢!
作者: lifei259    时间: 2017-10-29 22:50

  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%a in ('dir /a-d /b /s ^|findstr ^[0-9][0-9][0-9][0-9]') do (
  3. for /f "delims=" %%i in ('echo,%%~na^|findstr/b ^[0-9]') do (
  4. set str=%%~ni
  5. set d=!str:~0,4!
  6. if not exist !d! md !d!
  7.         move %%a !d!
  8. ))
  9. pause
复制代码





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