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

[文件操作] 求助批处理移动遇相同向上递增计数

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set path1=C:\2
  4. set path2=D:\3
  5. for /r %path1% %%a in (*.txt) do (
  6. if not exist "%path2%\%%~nxa" (move "%%a" "%path2%\") else (
  7. if not exist "%path2%\%%~na(2)%%~xa" (move "%%a" "%path2%\%%~na(2)%%~xa") else (
  8. set n=2
  9. for /f "delims=" %%b in ('dir /b /a-d %path2%\*^|findstr /r /be /c:"%%~na ([0-9][0-9]*)%%~xa"') do (
  10. set "str=%%~nb"
  11. set "m=!str:%%~na (=!"
  12. set "m=!m:)=!"
  13. if !m! gtr !n! set /a n=m
  14. )
  15. set /a n+=1
  16. move "%%a" "%path2%\%%~na(!n!)%%~xa"
  17. )
  18. )
  19. )
  20. endlocal
  21. pause
  22. 移动文件时遇相同向上计数递增, 现在是感觉不太科学
  23. 新建文本文档(2).txt
  24. 新建文本文档(2)(2).txt
  25. 新建文本文档(2)(2)(2).txt
  26. 新建文本文档(2)(2)(2)(2).txt
复制代码
希望写成像windows那样向上计数递增
新建文本文档.txt
新建文本文档 (2).txt
新建文本文档 (3).txt
新建文本文档 (4).txt
新建文本文档 (5).txt

本帖最后由 娜美 于 2024-6-2 15:23 编辑

各位大哥哥
以上都不符合哦

所有命令或连接都试了,  仅只能执行移动文件1次,  如果再次执行移动命令 或 不断重复执行命令就失效了, 说明移动文件遇到相同名称都不具有向上递增计数命名功能
还需考虑多扩展文件类型txt jpg rar zip 等
for /r %path1% %%a in (*.txt *.rar) do (....)

TOP

回复 7# aloha20200628


   5楼还没测, 我回复时还没看到有代码上来, 我马上试试哈

TOP

本帖最后由 娜美 于 2024-6-2 16:05 编辑

回复 5# aloha20200628


   大哥哥这个写得很好,  计数递增命名格式正确,  虽然我看不太懂.  看上去很科学,   但扩展名只能一种*.txt吗 ?   考虑一下增加支持多扩展名就好了 *.txt rar zip jpg mp4 等等

请再修改一下我试试看 thanks
移动当前目录及子目录文件
for /r %path1% %%a in (*.txt *.rar *.zip *.jpg) do (....)

TOP

本帖最后由 娜美 于 2024-6-2 17:46 编辑

回复 12# 77七



1-4楼的连接及所有子连接都试过  用的最简单文件名称测试的, 没有任何特殊符号的,   
  1. D:\A
  2. D:\B
复制代码

  1. D:\A\新建文本文档.txt
  2. D:\A\1.txt
复制代码

  1. D:\B\新建文本文档.txt
  2. D:\B\1.txt
复制代码

TOP

本帖最后由 娜美 于 2024-6-2 18:10 编辑

回复 5# aloha20200628


   谢谢,  好了

TOP

Ok thanks大家

TOP

回复  娜美 再试试2楼
smss 发表于 2024-6-3 05:52



报错呢

TOP

本帖最后由 娜美 于 2024-6-3 14:59 编辑
如果原文件夹有

新建文本文档.txt
新建文本文档 (2).txt

如果目的文件夹有

新建文本文档 (4).txt ...
newswan 发表于 2024-6-3 09:31



    如果源文件夹,  目标文件夹,  都有相同名称, 这种情况5楼和15楼也是正确的,  它会递增命名

TOP

回复 15# 77七


    嗯呐是对的, 不过最好能不使用goto跳转方法,  因为要插入脚本, 会影响其它工作

TOP

本帖最后由 娜美 于 2024-6-3 15:04 编辑

回复 23# aloha20200628


   嗯你的5楼也对
但是不支持目录下有多个文件夹及子文件夹, 我偿试添加后 /s ('dir /s /b /a-d *.txt *.xlsx *.rar')
如果源目录下有多个文件夹及子文件夹  里面都有这些相同文件名称
  1. 新建文本文档 (2).txt
  2. 新建文本文档 (3).txt
复制代码
目标文件夹也有这些相同文件名称
  1. 新建文本文档 (2).txt
  2. 新建文本文档 (3).txt
复制代码
就会发生这种情况
  1. 新建文本文档 (2).txt
  2. 新建文本文档 (3).txt
  3. 新建文本文档 (4).txt
  4. 新建文本文档 (32).txt
  5. 新建文本文档 (232).txt
  6. 新建文本文档 (3232).txt
  7. 新建文本文档 (23232).txt
  8. 新建文本文档 (323232).txt
  9. 新建文本文档 (2323232).txt
  10. 新建文本文档 (32323232).txt
复制代码

TOP

回复 25# aloha20200628


    漂亮, 正确了 thanks哦

TOP

返回列表