【发布时间】:2021-02-09 10:06:42
【问题描述】:
我正在尝试找到将所有文件、所有类型的扩展名从源文件夹移动到目标文件夹的解决方案。
问题是我在网上找到的脚本没有检查目标文件夹中是否已经存在同名文件以及是否添加下划线和变量编号(1,2,3,4,5 和等等)在文件的末尾。
我在这里有一些东西,我试图把它放在一起,但它不起作用。批处理脚本或 Powershell 无关紧要。请求的结果是移动所有文件,如果目标文件夹中存在文件 a.pdf,则将其移动到目标文件夹并添加变量编号 a_1.pdf 或 a_2.pdf
@ECHO OFF
SETLOCAL
SET "sourcedir=C:\Users\Daniel\Desktop\testing"
SET "destdir=C:\Users\Daniel\Desktop\testing2"
FOR /f "delims=" %%a IN (
'dir /s /b /a-d "%sourcedir%\*" '
) DO (
IF EXIST "%destdir%\%%~nxa" (
SET notfound=Y
FOR /L %%b IN (1,1,999) DO IF DEFINED notfound IF NOT EXIST "%destdir%\%%~na(%%b)%%~xa" (
(move "%%a" "%destdir%\%%~na(%%b)%%~xa"
SET "notfound="
)
IF DEFINED notfound ECHO(Failed to COPY "%%a"
) ELSE ((move "%%a" "%destdir%\%%~nxa"
)
)
pause
实际结果是这样的
move "C:\Users\Daniel\Desktop\testing\1.jpeg" "C:\Users\Daniel\Desktop\testing2\1(1).jpeg"
move "C:\Users\Daniel\Desktop\testing\1.txt" "C:\Users\Daniel\Desktop\testing2\1(1).txt"
但是当我查看文件夹时,什么都没有发生
非常感谢
【问题讨论】:
-
“它不工作” 不是一个有用的问题描述。实际结果是什么,预期结果是什么?请编辑您的问题以包含这些详细信息。
-
我已经更新了结果
-
ECHO(move只是echoesmove命令。这样可以检查建议运行的命令的完整性。如果您想实际运行move,请将ECHO(move更改为move(您的批次中有两个实例) -
Magoo 当然可以,但是代码什么也没做
标签: batch-file