[玩转系统] 如何使用 PowerShell 移动文件
作者:精品下载站 日期:2024-12-14 03:45:26 浏览:15 分类:玩电脑
如何使用 PowerShell 移动文件
当您需要移动大量文件或移动多台计算机上的特定文件时,PowerShell 是一个很好的工具。使用 PowerShell,我们可以快速编写一个脚本来移动文件,甚至在需要时添加一些日志记录。
移动文件是一项非常常见的任务,例如,您可能希望将所有超过 x 天的文件存档到不同的位置。通过利用 PowerShell,我们可以编写脚本并安排其自动运行。
在本文中,我将解释如何使用 PowerShell 移动文件并提供一些示例。
使用 PowerShell 移动文件
使用 PowerShell 移动单个文件是通过 Move-Item
cmdlet 完成的。它需要源文件的路径和移动文件的目标。以下示例将 readme.txt
文件移动到 d:\archive
文件夹:
Move-Item -Path "C:\temp\files\readme.txt" -Destination "D:\archive\"
需要注意的是,目标文件夹需要以 \
结尾。这样做的原因是,如果目标文件夹(本例中的 archive
)不存在,则 PowerShell 会将文件移动到 D:\
并为其命名存档,没有任何文件扩展名。
如果您想在控制台中查看哪些文件被复制,则可以使用 -PassThru
参数。这将输出一个包含所有移动文件的对象。
移动文件夹中的所有文件
您可以使用通配符*
移动文件夹中的所有文件。如果您只想移动文件而不移动任何子文件夹,请在路径参数中使用 *.*
:
# Move only all the files
Move-Item -Path "C:\temp\files\*.*" -Destination "D:\archive\"
要移动所有子文件夹及其内容,您只需使用 *
作为通配符:
# move all files and subfodlers
Move-Item -Path "C:\temp\files\*" -Destination "D:\archive\"
移动特定文件
有时您只想移动特定文件。您可以通过使用通配符并指定要移动的文件的文件扩展名来完成此操作。例如,要从文件夹中移动所有 .csv 文件,我们可以使用以下命令:
Move-Item -Path "C:\temp\files\*.csv" -Destination "D:\archive\"
在上面的示例中,仅将给定文件夹中的 CSV 文件移动到目标。如果您还想从子文件夹中移动文件 CSV 文件,那么我们首先需要使用 Get-ChildItem
cmdlet 获取所有项目。
Get-ChildItem
cmdlet 将从给定路径获取所有项目。通过使用 -Recurse
参数,它还将获取子文件夹中的所有项目。然后,我们可以通过管道将 Move-Item
cmdlet 传递给它,以将选定的文件移动到新的目标:
Get-ChildItem -Path "C:\temp\files\*.csv" -Recurse | Move-Item -Destination "D:\archive\"
使用包含和排除参数
Move-Item cmdlet 有一个您可以使用的 -Include
和 -Exclude
参数。它们允许您指定要移动或不移动到目标的文件类型。
Move-Item -Path "c:\temp\files\*" -Include "*.txt","*.csv" -Destination "d:\archive\"
现在,如果您尝试在 PowerShell 5.x 中使用这些参数,那么您可能会注意到它会在所有与包含不匹配的项目上抛出错误,“...不存在”或排除参数。
该问题已在 PowerShell 7 中得到解决,但如果您使用的是 PowerShell 5.x,则可以先使用 Get-ChildItem
cmdlet 解决此问题。另一个选项是指定包含要移动的所有文件类型的多个路径:
Move-Item -Path "c:\temp\files\*.csv", "c:\temp\files\*.txt" -Destination "d:\archive\"
强制覆盖文件
当您尝试移动目标文件夹中已存在的文件时,您将收到文件存在的错误消息。要覆盖现有文件,只需使用 -Force
参数即可。
高级移动文件示例
您现在应该对 move-item
cmdlet 的基础知识有了很好的了解。让我们看一些更高级的示例。
移动超过 x 天的文件
清理目录时的常见做法是仅归档超过 x 天的文件。为此,我们首先需要计算文件日期。假设我们想要归档或移动所有超过 30 天的文件,那么我们首先需要获取 30 天前的日期:
# Get the date from today minus 30 days
$dateTime = (Get-Date).AddDays(-30)
下一步是获取早于给定日期的所有文件。为此,我们将文件的lastwritetime
与我们计算的datetime
进行比较:
Get-ChildItem -Path $Path -Recurse -File | Where-Object { $_.LastWriteTime -lt $dateTime }
然后,我们只需在其后面传递 Move-Item
cmdlet 即可将文件实际移动到新位置
$dateTime = (Get-Date).AddDays(-30)
$path = "C:\temp\files\"
# Move all files from the given path and subfolders that are older than 30 days
Get-ChildItem -Path $Path -Recurse -File | Where-Object { $_.LastWriteTime -lt $dateTime } | Move-Item -Destination "D:\archive\"
移动大于的文件
另一个常见操作是仅移动给定文件夹中的大文件。就像仅移动旧文件一样,我们首先使用 Get-ChildItem
cmdlet 获取项目。
$path = "C:\temp\files\"
# Set file size
$sizeInMb = 500
# Calculate actual file size
$size = $sizeInMb*1024*1024
# Move all files that are larger then given size
Get-ChildItem -Path $Path -Recurse -File | Where-Object { $_.length -gt $size } | Move-Item -Destination "D:\archive\"
总结
使用 Move-Item cmdlet 移动文件非常简单。如果您只想选择特定文件或想要使用高级文件,则可以使用 Get-ChildItem cmdlet 来选择所需的文件。
如果您想创建已移动文件的日志文件,请确保您也阅读了本文。此外,您还可以在本文中阅读有关调度脚本的更多信息。
我希望您喜欢这篇文章,请务必订阅时事通讯或在 Facebook 上关注我以获取最新文章。如果您有任何疑问,请在下面发表评论。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag