如何根据文件名自动创建文件夹并使用 .BAT 将文件移动到其文件夹中

Posted

技术标签:

【中文标题】如何根据文件名自动创建文件夹并使用 .BAT 将文件移动到其文件夹中【英文标题】:How to auto create folder based on filename and move the file into it's folder using .BAT 【发布时间】:2021-11-30 12:43:41 【问题描述】:

我已经解决了我的问题......我没有解决的是如果.bat 文件位于父文件夹中并且它应该适用于所有子文件夹,该怎么做?

目前,只有当.bat 文件与文件位于同一文件夹中时,它才会创建文件夹。如果文件在子文件夹中,则无法创建文件夹。

我拥有的是:

这个.bat的文件名是:

organize.bat

@echo off
for %%i in (*) do (
 if not "%%~ni" == "organize" (
  md "%%~ni" && move "%%~i" "%%~ni"
 )
)

我现在是怎么做的:

    我将.bat 文件与文件一起放在一个文件夹中 当我单击它时,它将根据该文件夹中的文件创建名称的文件夹 它还会移动那些同名文件夹中的每个文件

我需要什么:

    .bat 文件放在包含这些文件的许多子文件夹的主文件夹中 点击它执行上述相同的任务

抱歉,如果我的解释令人困惑......我希望它仍然可以理解。

提前谢谢你!

【问题讨论】:

***.com/q/28921039/62576 打开命令提示符窗口,输入for /? 并按下[ENTER] 键,了解可用的命令选项。 您应该将&& 更改为&,因为如果目录已经存在但后者不存在,则前者会跳过以下命令... 【参考方案1】:

您的尝试非常接近工作,但请注意使用简单方法而不检查每个细节的皱纹,因此,从这里开始:-

@echo off & Title %~n0
REM I recommend using cd /d "%~dp0" to ensure you start from the known cmd file folder location not some system folder
cd /D "%~dp0"
REM add the /R switch to run through subdirs
for /R %%i in (*) do (
REM replace organize to %~n0 so as to aid renaming by other users
 if not "%%~DPni" == "%~DPn0" (
REM to allow for nested paths we need a fuller DP location for N (check it works exactly as desired then remove the echos)
  echo md "%%~DPni" && echo move "%%~i" "%%~DPni"
 )
)

注意带有双 .dot.s 的文件,例如 cmd.exe.lnk,所以首先检查那些 echo

md "C:\Users\me\Favorites\Links\cmd.exe"
move "C:\Users\me\Favorites\Links\cmd.exe.lnk" "C:\Users\me\Favorites\Links\cmd.exe"

【讨论】:

首先,非常感谢您抽出宝贵时间撰写如此有用的答案!它完全按照我的需要工作。尽管我知道会发生的一个问题是它为每个文件创建了几个重复的文件夹(同一个文件至少有 8 个级别(文件夹))。您知道是否可以防止创建重复文件夹?如果没有,没关系,你还是很有帮助的!谢谢! 我猜会有“皱纹”,例如需要排除,但无法猜测看不见的数据(文件名)如何导致重复,那么您的 8 for 1 是如何产生的?

以上是关于如何根据文件名自动创建文件夹并使用 .BAT 将文件移动到其文件夹中的主要内容,如果未能解决你的问题,请参考以下文章

如何根据指定目录从一个文件夹中(含子文件夹)中搜索对应文件并自动复制至新路径下?

怎么让“bat文件”自动运行?

dos下执行bat文件,如何让两个命令之间自动延迟3秒后再继续执行?

windows下使用bat批处理文件定时自动备份oracle数据库并上传ftp服务器

如何将文本文档批量拆分为变量

求教:运行bat文件后如何让cmd窗口自动关闭?