找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 13226|回复: 4

[文件操作] 请批处理如何在按数量复制文件的同时更改文件的名称?

[复制链接]
发表于 2024-8-13 09:23:08 | 显示全部楼层 |阅读模式
@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个。
发表于 2024-8-13 10:14:54 | 显示全部楼层
  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
复制代码
发表于 2024-8-13 10:40: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
复制代码
 楼主| 发表于 2024-8-13 11:29:53 | 显示全部楼层
回复 2# 77七


   谢谢大神,已解决
 楼主| 发表于 2024-8-13 11:30:04 | 显示全部楼层
回复 3# aloha20200628


       谢谢大神,已解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 21:02 , Processed in 0.018588 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表