Board logo

标题: [文件操作] 请批处理如何在按数量复制文件的同时更改文件的名称? [打印本页]

作者: feixiang8209    时间: 2024-8-13 09:23     标题: 请批处理如何在按数量复制文件的同时更改文件的名称?

@echo off
:1
set /p a=文件名字:
set /p b=文件全后缀名(需要打上点“.”):   请教大神这一行代码如何去掉,因为我一般用来复制JPG文件不需要重复输入后缀名
set /p c=复制多少个文件:
set /p d=新文件名称前缀:    这一行要怎么加入下面新文件的名称?
set str1=%a%%b%
set str2=%a%%%i%b%
for /l %%i in (1,1,%c%) do (copy %str1% %str2%)
pause
goto 1
这段代码有几个问题:1、如果原文件名是1,复制出来的文件名就是11、12、13这样,如果同一个文件夹内的图片有个名字是11的话就会被覆盖掉,请问大神是否可以加一行代码让复制图片的同时按我的在复制前设定的名称来命名,避免覆盖后面的文件。  
                            2、复制出来的数量能否减掉一个,因为现在这个复制10个,加上原图就是11个,而我实际需要加原图才10个。
作者: 77七    时间: 2024-8-13 10:14

  1. @echo off
  2. rem 保存为ansi
  3. cd /d "%~dp0"
  4. set /a m=2
  5. set /p oldname=旧文件名:
  6. set newname=%oldname%
  7. set /p newname=新文件名(保留原名则按回车键):
  8. set /p n=数量:
  9. :1
  10. if %m% leq %n% (
  11. if not exist "%newname%(%m%).jpg" (
  12. copy "%oldname%.jpg" "%newname%(%m%).jpg"
  13. )
  14. set /a m+=1
  15. goto :1
  16. )
  17. pause
复制代码

作者: aloha20200628    时间: 2024-8-13 10:40

本帖最后由 aloha20200628 于 2024-8-13 10:48 编辑

回复 1# feixiang8209
  1. @echo off
  2. :1
  3. set /p a=文件名:
  4. set /p c=复制份数:
  5. set /a c-=1
  6. set /p d=新文件名前缀:
  7. for /l %%i in (1,1,%c%) do (copy /y "%a%.jpg" "%d%%a%%%i.jpg")
  8. pause
  9. goto :1
复制代码

作者: feixiang8209    时间: 2024-8-13 11:29

回复 2# 77七


   谢谢大神,已解决
作者: feixiang8209    时间: 2024-8-13 11:30

回复 3# aloha20200628


       谢谢大神,已解决




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