标题: [文件操作] 【已解决】FOR如何批量复制前一个文件,每隔100个文件自动删除前99个文件 [打印本页]
作者: LINGX 时间: 2021-1-8 15:57 标题: 【已解决】FOR如何批量复制前一个文件,每隔100个文件自动删除前99个文件
本帖最后由 LINGX 于 2021-1-11 22:24 编辑
- COPY *.001 *.002
- COPY *.002 *.003
- COPY *.003 *.004
- COPY *.004 *.005
- COPY *.005 *.006
- COPY *.006 *.007
- COPY *.007 *.008
- COPY *.008 *.009
- COPY *.009 *.010
复制代码
不知是否能用FOR语句实现以上功能?
注意:
不是重复COPY第1个文件*.001,是001复制为002,002复制为003……以此类推
以上经测试可用的代码是:- @echo off&setlocal enabledelayedexpansion
-
- for /l %%i in (1001,1,1099) do (
- set /a n=%%i,m=n+1
- copy *.!n:~-3! *.!m:~-3!
- )
-
- del /F *.0??
复制代码
——感谢terse!
接下来是新的问题:
如何实现 每复制到*.100就自动删除*.001至*.099,并且保留
*.100
*.200(复制到第200代时作更名操作,以此类推)
*.300
……
*.1000
作者: Batcher 时间: 2021-1-8 17:59
回复 1# LINGX
test.bat- @echo off
- setlocal enabledelayedexpansion
- for /l %%i in (1010,-1,1002) do (
- set "m=%%i"
- set /a n=m-1
- copy /y *.!n:~1! *.!m:~1!
- )
复制代码
请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: qixiaobin0715 时间: 2021-1-8 20:19
无扩展名?
作者: LINGX 时间: 2021-1-9 09:54
本帖最后由 LINGX 于 2021-1-9 10:45 编辑
感谢管理员亲自伸出援手!!- C:\Windows\Temp>0000test
- *.009
- 系统找不到指定的文件。
- 已复制 0 个文件。
- *.008
- 系统找不到指定的文件。
- 已复制 0 个文件。
- *.007
- 系统找不到指定的文件。
- 已复制 0 个文件。
- *.006
- 系统找不到指定的文件。
- 已复制 0 个文件。
- *.005
- 系统找不到指定的文件。
- 已复制 0 个文件。
- *.004
- 系统找不到指定的文件。
- 已复制 0 个文件。
- xxx.003
- 已复制 1 个文件。
- xxx.002
- 已复制 1 个文件。
- xxx.001
- 已复制 1 个文件。
复制代码
源文件只有一个:
*.001
但是只能成功复制出一个文件…………
不对,这次运行复制出了3个文件!
多运行几次 就成功复制成功10个文件了!!
能否请管理员科普一下,以上各参数在此例中的具体作用?
作者: LINGX 时间: 2021-1-9 10:04
有没有办法 只运行一次 就能实现以上效果?
作者: terse 时间: 2021-1-9 10:36
那就升序试- @echo off&setlocal enabledelayedexpansion
- for /l %%i in (1001,1,1010) do (
- set /a n=%%i,m=n+1
- copy *.!n:~-3! *.!m:~-3! 2>nul
- )
- pause
复制代码
作者: LINGX 时间: 2021-1-9 10:48
那就升序试
terse 发表于 2021-1-9 10:36
厉害!!
成功了!!
作者: LINGX 时间: 2021-1-9 10:51
本帖最后由 LINGX 于 2021-1-9 11:39 编辑
接下来是新的问题:
如何实现 每复制到*.100就自动删除*.001至*.099,并且保留
*.100
*.200(复制到第200代时作更名操作,以此类推)
*.300
……
*.1000
作者: LINGX 时间: 2021-1-9 17:57
本帖最后由 LINGX 于 2021-1-11 22:22 编辑
- @echo off
-
- cls
-
- md output 2>nul
-
- set copycmd=n
-
- setlocal enabledelayedexpansion
-
- for /l %%i in (100001,1,100100) do (
- set /a n=%%i, m=n+1, k=n*10
- copy *.!n:~-5! *.!m:~-5!
- if m equ k ( move /y *.!m:~-5! .\output\ ) else ( del /F *.!n:~-5! )
- )
复制代码
我以上代码是以共复制100代文件为例,每隔10代删除。
不过我这样写,没成功
求教有空的高手指点一下
作者: lifei259 时间: 2021-1-10 19:32
我没有搞清楚你想要什么,如果升序,相当于把001,复制到100,有何用,如果降序相当于把99复制100,有必要吗
作者: LINGX 时间: 2021-1-10 19:47
本帖最后由 LINGX 于 2021-1-11 22:23 编辑
回楼上:
是为了做一个无聊的实验。。。
============================
已经基本解决问题了,准备关闭本主题,感恩!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |