Batch file 从一个目录到另一个目录批量复制、重命名和覆盖最新文件
我找到了一种在Windows中使用批处理文件将目录中的最新文件复制到另一个目录的方法。但是,我希望您能帮助我弄清楚如何重命名复制的文件并覆盖旧文件Batch file 从一个目录到另一个目录批量复制、重命名和覆盖最新文件,batch-file,Batch File,我找到了一种在Windows中使用批处理文件将目录中的最新文件复制到另一个目录的方法。但是,我希望您能帮助我弄清楚如何重命名复制的文件并覆盖旧文件 @echo off set source="D:\Backup" set target="D:\tmp" FOR /F "delims=" %%I IN ('DIR %source%\*.csv /A:-D /O:-D /B') DO COPY %source%\"%%I" %target% & echo %%I & GOTO :E
@echo off
set source="D:\Backup"
set target="D:\tmp"
FOR /F "delims=" %%I IN ('DIR %source%\*.csv /A:-D /O:-D /B') DO COPY %source%\"%%I" %target% & echo %%I & GOTO :END
:END
其思想是源备份文件夹包含添加了日期和时间的增量备份。我希望结果有一个常量名称,比如raw.csv
,这样我就可以在Excel中使用它了
谢谢大家! @echo关闭
setlocal enableextensions disabledelayedexpansion
设置“source=D:\Backup”
设置“target=D:\tmp”
对于/F“delims=”%%I IN('
目录“%source%\*.csv”/A-D/O-D/B
“)复制“%source%\%%I”“%target%\raw.csv”&echo%%I&GOTO:END
:结束
如前所述,只需在复制操作中包含目标名称
我还更改了变量定义。除非有充分的理由这样做,否则在使用路径时,最好不要在变量值中包含引号(以后使用它们会更困难)。只需引用赋值(以防止出现特殊字符或最终空格的问题),然后在需要时引用文件系统引用
set "source=d:\backup"
^................^
set "target=D:\tmp"
^.............^
dir "%source%\*.csv"
^..............^
COPY "%source%\%%I" "%target%\raw.csv"
^............^ ^................^
@echo关闭
setlocal enableextensions disabledelayedexpansion
设置“source=D:\Backup”
设置“target=D:\tmp”
对于/F“delims=”%%I IN('
目录“%source%\*.csv”/A-D/O-D/B
“)复制“%source%\%%I”“%target%\raw.csv”&echo%%I&GOTO:END
:结束
如前所述,只需在复制操作中包含目标名称
我还更改了变量定义。除非有充分的理由这样做,否则在使用路径时,最好不要在变量值中包含引号(以后使用它们会更困难)。只需引用赋值(以防止出现特殊字符或最终空格的问题),然后在需要时引用文件系统引用
set "source=d:\backup"
^................^
set "target=D:\tmp"
^.............^
dir "%source%\*.csv"
^..............^
COPY "%source%\%%I" "%target%\raw.csv"
^............^ ^................^
如果你想要一个精确的目标名称,为什么不使用它呢?我很乐意。你能帮我解释一下正确的语法吗?
复制“%source%\%%I”“%target%\raw.csv”
?如果你想要一个精确的目标名称,为什么不使用它呢?我很乐意。您能帮我了解正确的语法吗?复制“%source%\%%I”“%target%\raw.csv”
?尝试了您的建议,但遇到了一些问题。源目录实际上长了一点,名称中有空格。我尝试在CMD中运行批处理文件,它返回一条错误消息,表示找不到该文件。我在路径中添加了引号,如下所示:“source=”D:\Google Drive\Backup”“
,现在它说它找不到文件,但是这次,它在源文件夹中显示了最新的.csv文件的实际名称。@zkvvoob,请检查引号。不是set“var=”value“
,而是set“var=value”
按照您的建议做了,但是出现了相同的错误,文件找不到。@zkvvoob,请注意,我更改了set
命令、dir
命令和copy
命令中的引号。尝试了您的建议,但遇到了一些问题。源目录实际上长了一点,名称中有空格。我尝试在CMD中运行批处理文件,它返回一条错误消息,表示找不到该文件。我在路径中添加了引号,如下所示:“source=”D:\Google Drive\Backup”“
,现在它说它找不到文件,但是这次,它在源文件夹中显示了最新的.csv文件的实际名称。@zkvvoob,请检查引号。不是set“var=”value“
,而是set“var=value”
按照您的建议做了,但是出现了相同的错误,文件找不到。@zkvvoob,注意我更改了set
命令、dir
命令和copy
命令中的引号。