使用Powershell将文件夹结构中的文件复制到各自的子文件夹中
我想将每个文件夹中的文件“file_to_move.txt”移动到各自的“done”文件夹中 因此C:\Temp\test\folder1中的文件\u to_move.txt被移动到C:\Temp\test\folder1\done 而C:\Temp\test\folder2中的文件\u to_move.txt被移动到C:\Temp\test\folder2\done …依此类推,最好在文件名中添加%date%\uuu%time% 如果文件夹(如下面示例中的folder4)没有文件_to_move.txt,脚本应该忽略它并继续 文件夹结构示例:使用Powershell将文件夹结构中的文件复制到各自的子文件夹中,powershell,batch-file,move,Powershell,Batch File,Move,我想将每个文件夹中的文件“file_to_move.txt”移动到各自的“done”文件夹中 因此C:\Temp\test\folder1中的文件\u to_move.txt被移动到C:\Temp\test\folder1\done 而C:\Temp\test\folder2中的文件\u to_move.txt被移动到C:\Temp\test\folder2\done …依此类推,最好在文件名中添加%date%\uuu%time% 如果文件夹(如下面示例中的folder4)没有文件_to_mov
- C:\Temp\test\DONE
- C:\Temp\test\folder1
- C:\Temp\test\folder1\done
- C:\Temp\test\folder1\some\u other\u文件夹
- C:\Temp\test\folder1\some\u other\u file.txt
- C:\Temp\test\folder1\file\u to\u move.txt
- C:\Temp\test\folder2
- C:\Temp\test\folder2\done
- C:\Temp\test\folder2\some\u other\u文件夹
- C:\Temp\test\folder2\some\u other\u file.txt
- C:\Temp\test\folder2\file\u to\u move.txt
- C:\Temp\test\folder3
- C:\Temp\test\folder3\done
- C:\Temp\test\folder3\some\u other\u文件夹
- C:\Temp\test\folder3\some\u other\u file.txt
- C:\Temp\test\folder3\file\u to\u move.txt
- C:\Temp\test\folder4
- C:\Temp\test\folder4\done
- C:\Temp\test\folder4\some\u other\u文件夹
- C:\Temp\test\folder4\some\u other\u file.txt
SET ThisScriptsDirectory=%~dp0
SET PowerShellScriptPath=%ThisScriptsDirectory%bin\movescript.ps1
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& '%PowerShellScriptPath%'"
在movescript.ps1中:
Move-Item C:\Temp\test\*\file_to_move.txt C:\Temp\test\*\done\file_to_move_$(get-date -f yyyyMMdd_HHmmss).txt
但这是行不通的。
我想它不够精确,无法工作
作为奖励,整个过程可以在基本脚本中完成,还是必须使用外部.PS1文件?您可以使用带有过滤器的cmdlet从路径递归检索所有文件到\u move.txt
文件。使用(别名foreach)对它们进行迭代,并使用cmdlet组合新路径。要复制项目,可以使用cmdlet:
如果要添加时间戳,可以使用cmdlet并使用所需格式调用ToString
方法,例如:
(Get-Date).ToString("yyyy-dd-M_HH-mm-ss")
输出:
2016-05-4_15-06-02
现在,您可以使用格式字符串和foreach循环中的$\uu0.Basename
和$\u0.Extension
属性来解析文件名。我将把这个作为练习留给你 您可以使用带有筛选器的cmdlet从路径中递归检索所有文件\u to_move.txt
文件。使用(别名foreach)对它们进行迭代,并使用cmdlet组合新路径。要复制项目,可以使用cmdlet:
如果要添加时间戳,可以使用cmdlet并使用所需格式调用ToString
方法,例如:
(Get-Date).ToString("yyyy-dd-M_HH-mm-ss")
输出:
2016-05-4_15-06-02
现在,您可以使用格式字符串和foreach循环中的$\uu0.Basename
和$\u0.Extension
属性来解析文件名。我将把这个作为练习留给你