首页 > 解决方案 > 用于复制和重命名文件的批处理脚本文件

问题描述

我正在编写批处理脚本,如果位置 B 中已经存在相同的文件,我将使用该脚本将文件从位置 A 复制到位置 B,并从位置 A 重命名源文件。

目前我在堆栈上使用另一个主题的片段,但它不适用于子文件夹中的文件,任何人都可以帮助我使用下面的代码,以便它适用于两个位置的所有文件和子目录?非常感谢!

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET sourcedir="D:\TEST\FROM"
SET destdir="D:\TEST\TO"
SET /a count=0
for %%c in (%sourcedir%\*.*) do (
 CALL :select
 ECHO copy "%%c" "%destdir%\%%~nc_!count!%%~xc" /s
)

GOTO :EOF

:select
SET /a count+=1
IF EXIST "%destdir%\%%c" GOTO select
GOTO :eof

标签: windowsbatch-filecmd

解决方案


for用以下循环替换您的for循环:

for /R "%sourcedir%" %%c in (*.*) do (what you like)

另外,你为什么想要下面的代码?

copy "%%c" "%destdir%\%%~nc_!count!%%~xc" /s

只是copy "%%c" %destdir%

更一般地,您可以编写:

@ECHO OFF
SET sourcedir="D:\TEST\FROM"
SET destdir="D:\TEST\TO"
:: SET /a count=0
for /R "%sourcedir%" %%c in (*.*) do (
 :: SET /a count+=1
 IF NOT EXIST "%destdir%\%%c" (
    echo copy "%%c" %destdir%
 )
)

希望您对此感到满意,可能会重复使用子文件夹循环的 Windows 批处理文件


推荐阅读