【问题标题】:move files from one folder to another and if exists rename将文件从一个文件夹移动到另一个文件夹,如果存在重命名
【发布时间】: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 只是 echoes move 命令。这样可以检查建议运行的命令的完整性。如果您想实际运行 move,请将ECHO(move 更改为move(您的批次中有两个实例)
  • Magoo 当然可以,但是代码什么也没做

标签: batch-file


【解决方案1】:
@ECHO Off
SETLOCAL
SET "sourcedir=C:\Users\Daniel\Desktop\testing"
SET "destdir=C:\Users\Daniel\Desktop\testing2"

SET "sourcedir=u:\your files"
SET "destdir=u:\your results"

FOR /f "delims=" %%a IN (
 'dir /s /b /a-d "%sourcedir%\*" '
 ) DO (
 IF EXIST "%destdir%\%%~nxa" (
  rem destfile exists
  echo destfile "%destdir%\%%~nxa" exists
  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 (
  rem destfile does not exist
  echo destfile "%destdir%\%%~nxa" does NOT EXIST
  move "%%a" "%destdir%\%%~nxa" >nul
 )
)
GOTO :eof

这对我有用。坦率地说,我太累了,无法弄清楚这些差异。

注意事项:
我覆盖了目录名值。
我添加了 rems 和逐步报告,这显然可以删除
注意:代码执行move 发布的语句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-25
    相关资源
    最近更新 更多