windows - 从具有相同文件名的多个目录中批量复制文件
问题描述
我正在使用批处理文件从一个目录复制 .gml 文件。
我的问题是它们都在子目录中并且都称为相同的名称。
到目前为止,我所拥有的是:
FOR /r C:\Users\%USERNAME%\Downloads %%f in (*.gml) do copy %%~f C:\Users\%USERNAME%\Desktop\Inspire_Index_polygons\
这会复制文件但会覆盖现有文件,因此我可以看到批处理文件正在工作,因为文件的大小会发生变化,因为每次都会被覆盖。
有没有一种方法可以复制 .gml 文件并使用重复的 +1 重命名复制的文件,这样复制时名称总是不同的。
解决方案
这里有一些可以帮助您实现这一目标的东西。我们测试文件是否存在于目标中,如果存在,则将其重命名为附加 (+1)。
@echo off
setlocal enabledelayedexpansion
set "source=C:\Users\%USERNAME%\Downloads\"
set "dest=C:\Users\%USERNAME%\Desktop\Inspire_Index_polygons\"
set /a cnt=0
for /f "tokens=*" %%a in ('dir /S /B /A-D "%source%*.gml"') do for /f "tokens=*" %%b in ('dir /B "%%a"') do if exist "%dest%\%%b" (
set "ext=%%~xa"
set "fname=%%~na"
if exist "%dest%\!fname!(!cnt!)!ext!" (set /a cnt=!cnt!+1)
set /a cnt=!cnt!+1
move "%%a" "%dest%\!fname!(!cnt!)!ext!"
) else move "%%a" "%dest%\%%b"
推荐阅读
- kubernetes - HostOutOfMemory 警报正在普罗米修斯的松弛通道中触发
- django - 如何使所有模板都可以使用 url 变量
- kubernetes - 使用 terraform 在 kubernetes 上计划重启
- matrix - 可以使用 AWK 数组来获得相关矩阵中的最大簇吗?
- firefox - 语音调度程序不会在 manjaro 上启动
- android - 如何在 PageView 多个页面中维护单独的表单键?
- google-sheets-api - 如何在谷歌api中获取只有谷歌表格范围的用户电子邮件
- mpandroidchart - 关于 MPAndroidChart XAxis 标签
- java - 为什么我的 jGRASP 项目文件如此臃肿?
- google-contacts-api - 无法验证谷歌 api