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

时间:2017-01-19 10:33:51

标签: powershell

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

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

2 个答案:

答案 0 :(得分: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。

  8. 实际上,这并不是什么大问题,如果没有捷径,它看起来就像一个普通的英语。

答案 1 :(得分:0)

你基本上需要做的是:

        
  1.          Get a list of files in a selected folder通过PowerShell。     
  2.     
  3. 创建新文件夹in a loop using the New-Item cmdlet,其名称由所选文件的using substring of a name生成。     
  4.     
  5. 对于每个文件,将文件移动到新位置using the Move-Item cmdlet.     
  6. 希望有所帮助。