Windows 批处理文件根据文件类型移动内容

Windows 批处理文件根据文件类型移动内容

我正在想办法管理从 chrome 下载的文件。我希望我的 pdf 文件保存在 ABC 目录中,音频文件保存在 XYZ 目录中,等等。我想到了一种通过批处理文件来实现的方法。我的批处理文件将在后台静默运行,并将根据文件类型自动将下载的文件分发到所需的文件夹中。

对于 html 文件类型,因为它也保存一个目录,其中包含很多与该 html 页面相关的内容。所以我必须移动 .html 文件和相关目录。

我编写了一个代码来执行此操作,但我在这里遇到一个问题。它移动了.html 文件但没有移动其各自的目录。在命令提示符下,它显示 1 个目录已移动,但实际上目录并没有移动。

以下是代码:

    @echo off

    setlocal EnableDelayedExpansion

    for %%i in (*.html) do (
    move "%%~i" HTML
    set dirName=%%i
    set dirNameWithoutExtension=!dirName:~0,-5!
    move %dirNameWithoutExtension% HTML

    )

请建议是否有任何简单的方法可以达到根据文件类型分发下载文件的目的。

答案1

@echo off
setlocal EnableDelayedExpansion
if not exist HTML md HTML
for %%i in (*.html) do (
    move "%%~i" HTML
    set dirName=%%i
    set dirNameWithoutExtension=!dirName:~0,-5!
    move "!dirNameWithoutExtension!" HTML
)

您可以制作一个通用批处理文件来处理不同的扩展,或者只使用以下其中一个许多实用工具正是为此目的而创建的。

答案2

尝试使用相对路径,不解开你的For语句,你可以尝试

%%~i\..\

以及后续

%%~i\..\..\..\ 

如果需要的话,可以回到根源吗?

相关内容