我正在通过 Windows cmd 使用以下脚本自动将位于/源自多个子目录的多个文件复制到单个目录:
cd /d "C:\example files\various\raw files"
for /r %d in (*) do copy "%d" "C:\example files\conso"
如果我想覆盖重复的文件,我会在脚本末尾加上 \y。
然而,我的困境是我想不是覆盖这些文件,而不是自动重命名它们。
Windows cmd 中是否有其他命令会尝试复制这些文件,如果发现重复项则尝试重命名它们?
答案1
这是一个批处理文件。我正在使用命令的备份功能。程序可以在以下文件夹cp
下找到\usr\local\wbin
这个压缩文件(UnxUtils 项目)。将可执行文件提取到您的%PATH%
.
@echo off
setlocal EnableDelayedExpansion
rem Set VERSION_CONTROL variable, read by `cp' *nix command
set VERSION_CONTROL=t
rem Define origin and destination folders
set "_orig=C:\example files\various\raw files"
set "_dest=C:\example files\conso"
for /r "%_orig%" %%F in (*.*) do cp -b "%%F" "%_dest%"
for %%N in ("%_dest%\*.*") do (
set _ext=%%~xN
if "!_ext:~-1!" == "~" (
set "_name=%%~nN"
ren "%%N" "!_name:~0,-4!(!_ext:~-2,1!)!_name:~-4,4!"
)
)