【问题标题】:Walk through directory structure and move files with certain extensions up one level浏览目录结构并将具有某些扩展名的文件上移一级
【发布时间】:2017-05-11 10:43:02
【问题描述】:

我尝试递归遍历文件夹并将某些文件上移一级。例如 PDF 和 DOC。 文件夹的结构是: 文件夹 1 -> 文件夹 2-> 文件夹 3 -> 文件夹(doc)-> *.doc, 文件夹(mp3)-> *.mp3.

我需要像这样改变它: 文件夹 1 -> 文件夹 2-> 文件夹 3 -> 文件夹(doc)、*.doc、文件夹(mp3)、*.mp3。

所以我有很多这样的文件夹。并且无法手动执行此操作。

我试过制作脚本: v1.0

For /R %%G in (*.doc,*.mp3) do move %%G ../

v1.1

For /R %%G in (*.doc,*.mp3) do move %%~nxG ../

v1.2

For /R %%G in (*.doc,*.mp3) do (
set B=%%~nxG
move %%B  ../

但它不起作用。 我做错了什么?

如果我手动执行此操作:

CD 文件夹 1
CD 文件夹 2
CD 文件夹 3
CD 文件夹(doc)
移动 *.doc ../

成功了!

如果有任何建议,我将不胜感激!

【问题讨论】:

  • 删除结尾的/。还要在 move 命令中引用 %%G var,以便它可以处理目录和文件名中的空格 for /R %%G in (*.doc,*.mp3) do move "%%G" ..
  • For /R %%G in (*.doc,*.mp3) do move "%%G" "%%~PG.." 请注意,您的.. 引用指定当前目录的父目录,而不是每个文件的父目录! for /R 命令改变当前目录。
  • 非常感谢!正是需要的!!!
  • @Aacini 对不起我的摔倒。我是第一次使用stackoverflow。请发表您的评论作为答案!

标签: batch-file windows-7


【解决方案1】:
For /R %%G in (*.doc,*.mp3) do move "%%G" "%%~PG.."

请注意,您的.. 引用指定当前 目录的父目录,而不是每个文件的父目录! for /R 命令不会改变当前目录。

【讨论】:

    猜你喜欢
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 2021-04-05
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多