[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何将文件按名称移动汇总至不同的文件夹?

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

难道无法实现么,求高手们帮忙

TOP

  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
复制代码

TOP

感谢高手指点,不过测试没有成功,不知还有哪些需要注意或自行修改的信息?

TOP

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

回复 4# pzr0254


    我都测试成功了,你没成功可能是你的描述不准确

TOP

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

TOP

  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
复制代码

TOP

返回列表