gpt4 book ai didi

batch-file - 批处理脚本移动文件而不覆盖

转载 作者:行者123 更新时间:2023-12-02 01:08:32 25 4
gpt4 key购买 nike

我想要一个脚本,以便我的文件从一个文件夹移动到另一个文件夹并创建一个新文件(如果任何文件已存在)。

例如,我在下载文件夹中有一个文件 test.csv。当我运行以下脚本时,如果 downloads1 文件夹中存在任何同名文件,则覆盖该文件。

但我想,它不应该覆盖现有文件,但两个文件都应该在那里..可能会更改名称。在后面添加 1,2。

move C:\user\Downloads\*.csv C:\user\downloads1\

我也知道使用/-Y 会问我需要覆盖。但我想自动执行此操作。

move /-Y C:\user\Downloads\*.csv C:\user\downloads1\

最佳答案

最简单的方法:

echo No|move /-Y  .\file1 .\file2

你也可以使用通配符:

echo NO|move /-Y  "C:\user\Downloads\*.csv" "C:\user\downloads1\"

还有你的情况:

for %%f in ("C:\user\Downloads\*.csv") do (
echo No|move /-Y "%%~dpfnxf" "C:\user\downloads1\"
)

编辑:

for %%f in ("C:\user\Downloads\*.csv") do (
if exist "C:\user\downloads1\%%~nxf" (
rem move "C:\user\downloads1\%%~nxf" "C:\user\downloads1\%%~nxf.bkp"
move "C:\user\downloads1\%%~nxf" "C:\user\downloads1\%%~nf-%%N.%%~xf"
)
move /Y "%%~dpfnxf" "C:\user\downloads1\"
)

还要检查这个:Copy files without overwrite

再进行一次编辑:

setlocal enableDelayedExpansion
for %%f in ("C:\user\Downloads\*.csv") do (
set "moved="
if exist "C:\user\downloads1\%%~nxf" (
for /l %%N in (1,1,50) do (
if not defined moved if not exist "C:\user\downloads1\%%~nxf.%%N" (
move "C:\user\downloads1\%%~nxf" "C:\user\downloads1\%%~nxf.%%N"
set moved=yes
)
)

)
move /Y "%%~dpfnxf" "C:\user\downloads1\"
)
endlocal

未测试。

关于batch-file - 批处理脚本移动文件而不覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19699948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com