【问题标题】:batch command that moves certain files within folder and sub folders all to a separate single folder将文件夹和子文件夹中的某些文件全部移动到单独的单个文件夹的批处理命令
【发布时间】:2017-04-04 23:10:30
【问题描述】:

我有一个批处理命令,它将某些文件从一个文件夹移动到另一个文件夹,如下所示:

move /-y "U:\REVIT\REVIT FAMILES\*.00*.rfa" "U:\REVIT\Revit Backup Files"
pause

这会将已创建且扩展名为 .001.rfa.002.rfa 等的备份文件移动到另一个文件夹,但它只会移动该特定文件夹中的文件,而不会从现有的子文件夹中移动任何文件.有人可以帮忙添加这个功能吗?

【问题讨论】:

  • 是要在目标目录中体现源目录层次结构,还是要将所有文件平铺移到那里?

标签: batch-file command revit


【解决方案1】:

保留目录层次结构

如果您想保留目录层次结构,您可以执行以下操作:

robocopy "U:\REVIT\REVIT FAMILES" "U:\REVIT\Revit Backup Files" "*.00*.rfa" /S /MOV /XC /XN /XO

/XC /XN /XO 选项可防止覆盖。请注意,没有提示。删除它们以强制覆盖已经存在的目标文件。


或者,您可以使用xcopydel

xcopy /Y /S /I "U:\REVIT\REVIT FAMILES\*.00*.rfa" "U:\REVIT\Revit Backup Files"
del /S "U:\REVIT\REVIT FAMILES\*.00*.rfa"

/Y 选项强制覆盖已经存在的目标文件。当您将其更改为/-Y 以实现提示时,del 不关心选择,仍然会删除所有匹配的源文件。


最后,第三种选择是使用for 循环:

set "TARGET=U:\REVIT\Revit Backup Files"
pushd "U:\REVIT\REVIT FAMILES"
for /F "tokens=2 delims=:" %%F in ('xcopy /L /S /Y /I "*.00*.rfa" "%TARGET%"') do (
    2> nul md "%TARGET%\%%F\.."
    move /-Y "%%F" "%TARGET%\%%F"
)
popd

xcopy /L 只是将建议的文件列为相对于源目录的路径,但实际上并未复制(由于/L)。每个迭代的文件都由move 命令移动; /-Y 强制提示,以防目标文件已存在。在目标目录中创建每个子目录都需要md 命令,2> nul 会在已经存在的情况下抑制错误消息。


不保留目录层次结构

再次需要一个for 循环,但这次dir /B /S 替换了xcopy /L

for /F "tokens=2 delims=:" %%F in ('dir /B /S /A:-D "U:\REVIT\REVIT FAMILES\*.00*.rfa"') do (
    move /-Y "%%F" "U:\REVIT\Revit Backup Files\%%~nxF"
)

~nx 修饰符从%%F 中的路径中提取纯文件名(基本名称加扩展名)。

【讨论】:

  • 非常感谢您的详细回答,我认为我自己无法添加此内容!我选择了不保留目录层次结构的最后一个选项,以便所有文件合并到一个文件夹中,尽管如果确实有必要,其他选项将很有用。如果我只是在最后添加“暂停”,这是否意味着它会一直留在屏幕上,而不是在运行时闪烁和消失?再次感谢。
  • 如果在最后添加pausecmd窗口将保持打开状态(当批处理文件双时钟运行时)并显示代码的所有输出,主要是每个移动文件的1 file(s) moved. 消息;要抑制这些消息,请将 ` > nul` 附加到 move 命令行;如果要列出每个移动的文件,请在 move 命令行之前插入一行 echo "%%~nxF"...
【解决方案2】:

我认为您可以通过以下方式实现您想要的:

for /f %i in ('dir /s /b "REVIT FAMILES*.00*.rfa"') do move /-Y "%i" "U:\REVIT\Revit Backup Files\"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2016-01-30
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    相关资源
    最近更新 更多