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

[文件操作] 批处理如何按关键字将文件夹下文件分类?

按关键字将文件夹下文件分类,例如:文件夹下存在1a.txt,2a.txt,3a.txt,2b.txt,3b.txt,4b.txt......,怎么将含有a的文件放入新建的a文件夹,含有b的文件放入新建的b文件夹

  1. @Echo off&SetLocal EnableDelayedExpansion
  2. for /r %%i in (*.txt)do (set "n=%%~ni"&if not exist !n:~-1! md !n:~-1!
  3. move "%%i" !n:~-1!)
  4. pause
复制代码

TOP

我觉得例子不典型,如果关键字是去掉数字的文件名的话:
  1. @echo off
  2. for %%i in (*.txt) do (
  3.     for /f "tokens=* delims=0123456789" %%a in ("%%~ni") do (
  4.         if not exist "%%a" md "%%a"
  5.         move "%%i" "%%a"
  6.     )
  7. )
  8. pause
复制代码

TOP

回复 3# qixiaobin0715


    类似这种:Microsoft-Windows-LanguageFeatures-Basic-de-ch-Package~31bf3856ad364e35~amd64~~,我需要按照de-cn提取,然后放入de-cn的文件夹

TOP

本帖最后由 qixiaobin0715 于 2021-2-27 11:53 编辑

还是没有说的太明白,猜是一个很痛苦的事,还不知是否猜对。
  1. @echo off
  2. for %%i in (*.txt) do (
  3.     for /f "tokens=4 delims=~" %%a in ("%%i") do (
  4.         if not exist %%a md %%a
  5.         move "%%i" "%%a"
  6.         )
  7. )
  8. pause
复制代码

TOP

应当把关键字的特征说清楚,比如4楼的例子:为什么关键字是de-ch,而不是Basic-de。只是自己清楚,不准确表达出来,代码如何写?

TOP

回复 6# qixiaobin0715


关键字是对应的Windows的语言代码,例如en-US/zh-CN/en-GB.....只可能是这种格式,不会含有数字
Microsoft-OneCore-StorageManagement-FoD-Package~31bf3856ad364e35~wow64~en-US~
Microsoft-Windows-ActiveDirectory-DS-LDS-Tools-FoD-Package~31bf3856ad364e35~amd64~en-GB~
Microsoft-OneCore-StorageManagement-FoD-Package~31bf3856ad364e35~amd64~zh-CN~

TOP

如果按“~”进行分割,是否关键字都在第4组
1:Microsoft-OneCore-StorageManagement-FoD-Package   2:31bf3856ad364e35   3:wow64   4:en-US

TOP

回复 8# qixiaobin0715


       是的,就是第四组

TOP

回复 9# Bieber
5楼代码已修改,试试吧

TOP

回复 10# qixiaobin0715


    感谢,我试试

TOP

返回列表