基于文件名将文件移动到文件夹的PowerShell脚本?
我有一个文件夹c:\test和文件:基于文件名将文件移动到文件夹的PowerShell脚本?,powershell,Powershell,我有一个文件夹c:\test和文件: Raport-en-us-Country1.xlsx Raport-en-us-Country2.xlsx Raport-en-us-Country3.xlsx 等等 我想 基于文件名的最后一部分创建文件夹 将文件移动到新文件夹 如果文件已存在,则应覆盖旧文件 示例:c:\test\Raport-en-us-Country1.xlsx应转到c:\test\Country1\Raport-en-us-Country1.xlsx 有人能帮我创建一个Power
- Raport-en-us-Country1.xlsx
- Raport-en-us-Country2.xlsx
- Raport-en-us-Country3.xlsx
c:\test\Raport-en-us-Country1.xlsx
应转到c:\test\Country1\Raport-en-us-Country1.xlsx
有人能帮我创建一个PowerShell脚本吗
我有以下代码,它创建文件夹,但不移动文件:
# 1. Get a list of files in the c:\test folder
$FileList = Get-ChildItem -Path c:\test;
# 2. Parse file names, create folder structure, and move files
foreach ($File in $FileList) {
$File.Name -match '(?<folder>.*?)(?:-)(?<subfolder>\w{2})(?:-)(?<filename>.*)';
if ($matches) {
$Destination = 'c:\test\{0}\{1}\{2}' -f $matches.folder, $matches.subfolder, $matches.filename;
mkdir -Path (Split-Path -Path $Destination -Parent) -ErrorAction SilentlyContinue;
Move-Item -Path $File.FullName -Destination $Destination -WhatIf;
}
$matches = $null
}
#1。获取c:\test文件夹中的文件列表
$FileList=Get ChildItem-Path c:\test;
# 2. 解析文件名、创建文件夹结构和移动文件
foreach($FileList中的文件){
$File.Name-match'(?*?(:-)(?\w{2})(?:-)(?*);
如果($匹配){
$Destination='c:\test\{0}\{1}\{2}'-f$matches.folder、$matches.subfolder、$matches.filename;
mkdir-路径(分割路径-路径$Destination-父级)-错误操作SilentlyContinue;
移动项目-Path$File.FullName-Destination$Destination-WhatIf;
}
$matches=$null
}
拆分-
上的.BaseName
,取最后一部分,用该名称创建一个目录,然后移动文件。这涵盖了这个概念。[grin]////由于这不是一项代码编写服务,而是一个“帮助修复我的代码”网站,因此您需要显示您的代码以及哪些代码不起作用,或者转到类似SuperUser的网站,让他人为您编写代码。是否删除-WhatIf
开关?