Board logo

标题: [文件操作] [已解决]请教批处理如何实现自定义序号范围来移动文件? [打印本页]

作者: toyerspollors    时间: 2021-8-9 19:56     标题: [已解决]请教批处理如何实现自定义序号范围来移动文件?

比如我有几千个wma格式的文件,文件名格式为“序号+空格+相关名称“,如:1323 xxx文件名

如何自定义序号范围,例如实现将
序号0001-0235的文件移动到“A”文件夹中
序号0341-0559的文件移动到”B“文件夹中
序号0773-1389的文件移动到”C“文件夹中
序号2361-3442的文件移动到”D“文件夹中
作者: idwma    时间: 2021-8-9 20:06

  1. @echo off&setlocal enabledelayedexpansion
  2. for /l %%i in (1,1,235) do set n=000000%%i&copy !n:~-4!* A\
  3. for /l %%i in (341,1,559) do set n=000000%%i&copy !n:~-4!* B\
  4. for /l %%i in (2361,1,3442) do set n=000000%%i&copy !n:~-4!* C\
  5. pause
复制代码

作者: qixiaobin0715    时间: 2021-8-10 10:24

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /l %%i in (1,1,3442) do (
  4.     set n=000%%i
  5.     if %%i lss 341 (
  6.         copy !n:~-4!* A\
  7.     ) else if %%i lss 773 (
  8.         copy !n:~-4!* B\
  9.     ) else if %%i lss 2361 (
  10.         copy !n:~-4!* C\
  11.     ) else if %%i lss 3442 (
  12.         copy !n:~-4!* D\
  13.     )
  14. )
  15. pause
复制代码

作者: toyerspollors    时间: 2021-8-14 22:17

本帖最后由 toyerspollors 于 2021-8-14 22:25 编辑
qixiaobin0715 发表于 2021-8-10 10:24


    if %%i lss 341 (
        copy !n:~-4!* A\
    )

请教老师,以上这里使用了数值大小的命令小于“lss 341”,如果我想添加多一个大于“gtr 123”,如取值为大于123且小于341,该如何修改命令才生效?
作者: toyerspollors    时间: 2021-8-14 22:27

回复 2# idwma


    n=000000%%i&copy !n:~-4!*

请教老师,红色字体这些命令,我具体需要看那些教程才能理解这里面的意思?
作者: idwma    时间: 2021-8-14 22:39

回复 5# toyerspollors


    运行set/?有帮助
作者: Batcher    时间: 2021-8-14 23:25

回复 5# toyerspollors


参考set命令教程第8页
http://bbs.bathome.net/thread-31727-1-1.html
作者: qixiaobin0715    时间: 2021-8-15 07:11

回复 4# toyerspollors
可以使用if嵌套:
  1. if %%i lss 341 (
  2.     if %%i gtr 123 copy !n:~-4!* A\
  3. )
复制代码

作者: toyerspollors    时间: 2021-8-15 17:03

回复 8# qixiaobin0715


    原来是这样处理,受教了,谢谢!




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