如何根据文件名创建目录,并使用 CMD 将这些文件移动到其中?

如何根据文件名创建目录,并使用 CMD 将这些文件移动到其中?

正如我所说,我在一个文件夹中有一些 *.Xml 文件,我想根据它们的名称将它们移动到子目录中。

但是,我还需要两样东西:-

1-我必须从父目录应用/运行命令,而不是从 *.xml 目录

2- 在创建所需的子目录并将 xml 文件移动到其中之后,我想将它们全部移动到一个名为“XML Backup”的新目录中

例如:- 我的文件位于如下位置

X:\folder1\folder2\file1.xml
X:\folder1\folder2\file2.xml
X:\folder1\folder2\file3.xml

我需要做的正是这样的:-

X:\folder1\folder2\xml_Backup\file1\file1.xml
X:\folder1\folder2\xml_Backup\file2\file2.xml
X:\folder1\folder2\xml_Backup\file1\file3.xml

请记住,我必须从X:\folder1

顺便说一句,我曾尝试以不同的方式从批处理文件中使用该命令,但由于我需要执行的条件,我无法做到这一点:-

for /R %%F in (*.xml) do (
2>nul md "%%~nF"
>nul Move /y "%%~nF.*" "%%~nF"
)

如果您尝试从 *.xml 目录运行此批处理/命令,它将正确地创建子目录(基于 xml 文件的名称),并将 xml 文件移动到其中,但问题是在创建新目录后,我需要将这些 xml 目录移动到另一个名为“Xml Backup”的目录中。

答案1

问题是在创建新目录后,我需要将这些 xml 目录移动到另一个名为“Xml Backup”的目录中

修改批处理以创建“xml_Backup”文件夹(如果它不存在),然后将其包含在循环中的MD和命令的目标路径中。Move

就像是:

rem Change to folder specified as argument.
pushd %1

rem Check if 'backup' folder exists; if not, create it.
if not exist "xml_Backup" md "xml_Backup"

rem Loop through files in the current folder.
for /R %%F in (*.xml) do (
  rem Create subfolder in 'backup' folder matching this file's name.
  md "xml_Backup\%%~nF"
  rem Move file to that folder.
  move /y "%%~nF.*" "xml_Backup\%%~nF"
)

rem Change back to the original directory we were in when pushd was executed.
popd

用 运行batchname.bat "c:\folderContainingXMLs"

即:batchname.bat "X:\folder1\folder2"batchname.bat ".\folder2"等。

答案2

如果 PowerShell 是一个选项,您可以尝试一下。不过,请先在一些测试数据上进行测试 - 我还没有亲自测试过。

New-Item X:\folder1\folder2\xml_backup -Type Directory
Get-ChildItem X:\folder1\folder2\*.xml |
ForEach-Object {
    $XMLName = $_.BaseName
    New-Item "X:\folder1\folder2\xml_backup\$XMLName" -Type Directory
    Move-Item $_ "X:\folder1\folder2\xml_backup\$XMLName"
}

我认为,你最大的问题是你从反面来看待这个问题。你想要:

  1. 创建特定文件的文件夹。
  2. 将文件移动到其特定文件夹中。
  3. 创建一个 XML 备份文件夹。
  4. 将特定文件的文件夹及其内容移动到 XML 备份中。

应该正如上面的脚本所示,要做的事情是:

  1. 创建 XML 备份文件夹。
  2. 在 XML 备份文件夹内创建特定文件的文件夹。
  3. 将文件移动到适当的子文件夹中。

如果您希望它不仅仅在 XML 文件X:\folder1\folder2(例如,相邻子文件夹中的其他 XML 文件)上运行,则需要对上述脚本进行额外的修改。

相关内容