Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 从一个目录到另一个目录批量复制、重命名和覆盖最新文件_Batch File - Fatal编程技术网

Batch file 从一个目录到另一个目录批量复制、重命名和覆盖最新文件

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

我找到了一种在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 :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
命令中的引号。