Board logo

标题: [文件操作] 批处理如何根据关键字、序号来创建新的文件夹 [打印本页]

作者: toyerspollors    时间: 2022-1-16 15:13     标题: 批处理如何根据关键字、序号来创建新的文件夹

不知道下方的问题该起什么样的主题。请见谅!

0110 购买-肉类-02
0110 购买-肉类-03
0110 购买-豆类-05
0110 出售-肉类-03
0115 其它-过期食品-03
0115 其它-清仓-02
0115 其它-清仓-03
0115 其它-清仓-04

我想利用批处理创建统计文件夹,如我当前目录下有上方的文件夹,我想根据中间红色部分的关键字,创建当天日期文件夹,后面的序号能接续起来,效果见下方。

0116 购买-肉类-04
0116 购买-豆类-06
0116 出售-肉类-04
0116 其它-过期食品-04
0116 其它-清仓-05
作者: flashercs    时间: 2022-1-16 15:45

后面序号会达到-99 后 怎么弄
作者: toyerspollors    时间: 2022-1-16 19:15

本帖最后由 toyerspollors 于 2022-1-16 19:17 编辑

回复 2# flashercs

一般达不到那么高数值,要是数值上100不好处理吗?

如果我前面的序号是1-9,而不是01-09,处理起来是不是比01-09要麻烦一些?
作者: qixiaobin0715    时间: 2022-1-16 20:44

本帖最后由 qixiaobin0715 于 2022-1-17 09:11 编辑

1-9、01-09代码不同而已。01-09这样处理:
  1. @echo off
  2. set var=%date:~5,2%%date:~8,2%
  3. setlocal enabledelayedexpansion
  4. for /f "tokens=2-4 delims=- " %%a in ('dir /b /ad') do set #%%a-%%b=%%c
  5. for /f "tokens=1* delims==#" %%i in ('set #') do (
  6.     for /f "tokens=* delims=0" %%x in ("%%j") do (
  7.         set /a n=100+%%x+1
  8.         md "%var% %%i-!n:~-2!"
  9.     )
  10. )
  11. pause
复制代码
未测试
作者: toyerspollors    时间: 2022-1-17 00:04

回复 4# qixiaobin0715

无法正确创建我想要的文件夹,请帮测试一下。谢谢!
作者: flashercs    时间: 2022-1-17 00:54

  1. @echo off
  2. set var=%date:~5,2%%date:~8,2%
  3. setlocal enabledelayedexpansion
  4. for /f "tokens=2-4 delims=- " %%a in ('dir /b /ad *-*-*') do set #%%a-%%b=%%c
  5. for /f "tokens=1* delims=#=" %%i in ('set #') do (
  6.         set /a n=1%%j+1
  7.         md "%var% %%i-!n:~-2!"
  8. )
  9. pause
复制代码

作者: qixiaobin0715    时间: 2022-1-17 09:12

回复 5# toyerspollors
已修改。还是6楼的代码严谨。
作者: qixiaobin0715    时间: 2022-1-17 09:39

本帖最后由 qixiaobin0715 于 2022-1-17 09:42 编辑

如果序号是1-9之类的:
  1. @echo off
  2. set var=%date:~5,2%%date:~8,2%
  3. setlocal enabledelayedexpansion
  4. for /f "tokens=2-4 delims=- " %%a in ('dir /b /ad *-*-*') do (
  5.     if defined #%%a-%%b (
  6.         if !#%%a-%%b! lss %%c set #%%a-%%b=%%c
  7.     ) else (
  8.         set #%%a-%%b=%%c
  9.     )
  10. )
  11. for /f "tokens=1* delims=#=" %%i in ('set #') do (
  12.     set /a n=%%j+1
  13.     md "%var% %%i-!n!"
  14. )
  15. pause
复制代码





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