Windows 批处理 - 将文件移动到文件夹父级并删除空子文件夹

Windows 批处理 - 将文件移动到文件夹父级并删除空子文件夹

我找到了几个这样的问题,并尝试根据我的需求调整答案,但到目前为止还没有成功。我试图在 Windows 7 中创建两个上下文菜单项,它们将:

  1. 将给定文件夹中子文件夹中的所有文件移动到父文件夹。重复文件应重命名Filename-Duplicate但不能删除。
  2. 删除所有空的子文件夹。

我能够成功创建所需的条目:

HKEY_CLASSES_ROOT\Directory\shell\Delete Empty Subfolders\command

HKEY_CLASSES_ROOT\Directory\shell\Move all subfiles here\command

这两个命令(我认为问题就在这里)如下:

for /r ROOT %%d in (*.*) do move "%%d" "%1\"
for /f "delims=" %%d in ('dir /s /b /ad ^| sort /r') do rd "%%d"

当我选择为测试此操作而创建的文件夹并从上下文菜单中选择其中一个时,似乎找到并执行了注册表项指向的磁盘上的批处理文件,但没有结果。

我认为问题出在命令本身。我对为了都可以。如果可以使用 PowerShell 完成,我愿意接受这个选项。如果可能的话,我会避免使用外部依赖项(例如第三方应用程序)来执行命令。

答案1

问题不在于你的命令。相反,它与注册表有关,因为当你这样做时,Windows 将开始寻找一个名为的程序for.exe

HKCU\Software\Microsoft\Windows\CurrentVersion\App Paths\for.exe
HKCU\Software\Microsoft\Windows\CurrentVersion\App Paths\for.exe

然后它开始在 System32 和 Windows 目录中查找您的程序for.*。如果失败,它会返回错误。

首先尝试创建一个 .bat 文件并将命令放入其中。在注册表中尝试引用批处理文件的完整路径。

PS:文件名过长的话你还会遇到另一个问题。

相关内容