[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

@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个。

回复 3# aloha20200628


       谢谢大神,已解决

TOP

回复 2# 77七


   谢谢大神,已解决

TOP

本帖最后由 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
复制代码

TOP

  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
复制代码
bat小白,请多指教!谢谢!

TOP

返回列表