【问题标题】:Batch File : Move file & If file already exist then keep both with renaming it by numeric sequence (LOOP)批处理文件:移动文件和如果文件已经存在,则保持两者都按数字序列重命名(LOOP)
【发布时间】:2018-11-23 06:43:57
【问题描述】:

我已经找到了解决方案,但我现在需要的是找到最短的命令行。 情况:文件“C:\Image.jpg”移动到“D:\”。如果“D:\”中存在“Image.jpg”,则将其重命名并移动为“Image01.jpg”。这个命令循环。 这是我的批处理命令行:

:start
IF EXIST "D:\Users\00002829\Pictures\Image.jpg" IF EXIST "D:\Users\00002829\Pictures\SFSAPP\VChip_X-Ray\Image03.jpg" (
    move "D:\Users\00002829\Pictures\Image.jpg" "D:\Users\00002829\Pictures\SFSAPP\VChip_X-Ray\Image04.jpg"
)
IF EXIST "D:\Users\00002829\Pictures\Image.jpg" IF EXIST "D:\Users\00002829\Pictures\SFSAPP\VChip_X-Ray\Image02.jpg" (
    move "D:\Users\00002829\Pictures\Image.jpg" "D:\Users\00002829\Pictures\SFSAPP\VChip_X-Ray\Image03.jpg"
)
IF EXIST "D:\Users\00002829\Pictures\Image.jpg" IF EXIST "D:\Users\00002829\Pictures\SFSAPP\VChip_X-Ray\Image01.jpg" (
    move "D:\Users\00002829\Pictures\Image.jpg" "D:\Users\00002829\Pictures\SFSAPP\VChip_X-Ray\Image02.jpg"
)
IF EXIST "D:\Users\00002829\Pictures\Image.jpg" (
    move "D:\Users\00002829\Pictures\Image.jpg" "D:\Users\00002829\Pictures\SFSAPP\VChip_X-Ray\Image01.jpg"
)
TIMEOUT /t 3
goto start

此命令仅限于 3 次文件重命名和移动。 谢谢

【问题讨论】:

标签: batch-file


【解决方案1】:

只需循环并找到所有文件,复制它们并重命名(如果存在)。

@echo off
setlocal disableDelayedExpansion
set "source=D:\Users\00002829\Pictures"
set "target=D:\Users\00002829\Pictures\SFSAPP\VChip_X-Ray"

md "%target%"
set /a cnt=0
for /r %%F %target% in (Image.jpg) do if "%%~dpF" neq "%target%\" (
  if exist "%%F" (
  if exist "%target%\%%~nxF" (
    set /a cnt+=1
    set "full=%%F"
    set "name=%%~nF"
    set "ext=%%~xF"
    setlocal enableDelayedExpansion
    copy "!full!" "!target!\!name!!cnt!!ext!" >nul
    endlocal
  ) else copy "%%F" "%target%" >nul
 )
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    相关资源
    最近更新 更多