在PowerShell中创建文件夹和移动文件

问题描述 投票:-5回答:2

我有一个包含数千个文件的文件夹(比如说.txt),名称不同:VBH_V001.txt VDD_V001.txt DTG_V001.txt ADC_V001.txt DFD_V001.txt等....

我需要在该文件夹中创建具有每个文件名称的目录,然后将这些文件移动到目录。结果应该是例如名称为VBH的文件夹(没有_V001.txt),在该文件夹中我应该有VBH_V001.txt文件。我怎样才能做到这一点。请指教。

powershell
2个回答
2
投票
cd <path to your folder>
  $files = Get-ChildItem -file;
  ForEach ($file in $files)
  {
    $folder = New-Item -type directory -name $file.BaseName;
    Move-Item $file.FullName $folder.FullName;
  }

此脚本为每个文件创建一个目录,并将文件移动到此目录。要从目录名中排除_V001,可以在$ file.BaseName上调用TrimEnd方法 -

$file.BaseName.TrimEnd ("_V001")

一步步。

  1. 首先,转到包含文件的目录。
  2. 通过使用带-file属性的Get-ChildItem cmdlet获取表示文件的对象列表。这些对象包含属性 - 例如BaseName,FullName等。
  3. 将此列表保存到$ files变量。
  4. 使用ForEach遍历列表。
  5. 在ForEach主体中,使用New-Item cmdlet为每个文件创建一个目录。 -type属性指定新项的类型(-type directory),-name属性替换$ file.BaseName属性。 BaseName属性返回一个字符串,其中包含没有扩展名和路径的文件名。
  6. 将新创建的目录的对象保存到$ folder变量中。
  7. 使用Move-Item cmdlet移动文件。此cmdlet需要两个属性:源路径和目标路径。作为源路径,使用文件对象的FullName属性,以及目标路径的目录对象的FullName属性。 FullName属性返回包含完整路径的文件或目录的名称,例如文件的D:\ directory \ file.txt和目录的D:\ directory \ anotherDirectory。

实际上,这并不是什么大问题,没有捷径,它看起来就像一个简单的英语。


0
投票

你基本上需要做的是:

  1. Get a list of files in a selected folder通过PowerShell。
  2. in a loop创建新文件夹using the New-Item cmdlet,其中包含using substring of a name所选文件的名称。
  3. 对于每个文件,将文件移动到新位置using the Move-Item cmdlet.

希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.