PowerShell与cmd的区别
Windows PowerShell®是基于任务的命令行管理程序和脚本语言,专为进行系统管理而设计。 在 .NET Framework 的基础上构建的 Windows PowerShell 可帮助 IT 专业人士和高级用户控制和自动执行 Windows 操作系统以及在 Windows 上运行的应用程序的管理。
cmd是面向过程的BAT脚本,而PowerShell是面向对象的脚本语言,旨在从用户的角度编写脚本
使用运行框:按下"Win + R"组合键打开运行框,键入"powershell",然后按下"Enter"键。
文件和文件夹有如下三个时间
- 更改名为 test.xlsx 的文件的创建日期/时间戳:
(Get-Item "路径").CreationTime=("创建日期")
日期格式 日月年时分秒
例 August 2023 12:30:00 ;3 7 2023 12:30:00
(Get-Item "D:\QQ\QQ数据\1497786960\FileRecv\test.xlsx").CreationTime=("3 August 2023 12:30:00")
- 更改名为 test.xlsx 的文件的最后写入日期/时间戳:
(Get-Item "路径").LastWriteTime=("创建日期")
(Get-Item "D:\QQ\QQ数据\1497786960\FileRecv\test.xlsx").LastWriteTime=("3 August 2023 12:40:00")
- 更改名为 test.xlsx 的文件的最后访问日期/时间戳:
(Get-Item "路径").LastAccessTime=("创建日期")
(Get-Item "D:\QQ\QQ数据\1497786960\FileRecv\test.xlsx").LastAccessTime=("3 August 2023 12:50:00")
- 更改文件夹中每个文件和子文件夹的时间戳的日期/时间戳:
Get-ChildItem -force D:\QQ\QQ数据\1497786960\FileRecv\ * | ForEach-Object{$_.CreationTime = ("3 August 2023 12:30:00")}
Get-ChildItem -force D:\QQ\QQ数据\1497786960\FileRecv\ * |ForEach-Object{$_.LastWriteTime = ("3 August 2023 12:40:00")}
Get-ChildItem -force D:\QQ\QQ数据\1497786960\FileRecv\* | ForEach-Object{$_.LastAccessTime = ("3 August 2023 12:50:00")}
ForEach-Object命令对每个文件执行命令,$_表示当前正在处理的文件。Get-ChildItem命令获取D:\QQ\QQ数据\1497786960\FileRecv\目录下的所有文件和文件夹,包括隐藏文件和系统文件。通过使用-Force参数,即使文件是只读的或受保护的,也会被获取到,ForEach-Object迭代遍历每个文件项。 上述命令会更改文件夹中每个文件和子文件夹的时间戳。要仅对文件应用更改(即排除子文件夹),请使用以下语法:
Get-ChildItem -force D:\QQ\QQ数据\1497786960\FileRecv\* | Where-Object {! $_.PSIsContainer} | ForEach-Object{$.CreationTime = ("3 June 2023 12:30:00")}
Get-ChildItem -force D:\QQ\QQ数据\1497786960\FileRecv\* | Where-Object {! $_.PSIsContainer} | ForEach-Object{$.LastWriteTime = ("3 June 2023 12:30:00")}
Get-ChildItem -force D:\QQ\QQ数据\1497786960\FileRecv\*| Where-Object {! $_.PSIsContainer} | ForEach-Object{$.LastAccessTime = ("3 June 2023 12:30:00")}
Where-Object {! $_.PSIsContainer}
:这部分命令使用Where-Object
筛选器,选择不是文件夹的项。! $_.PSIsContainer
**表示排除所有文件夹,只保留文件项。
- 更改文件夹中所有文件和文件夹的时间戳的日期/时间戳:
Get-ChildItem -Recurse -force D:\QQ\QQ数据\1497786960\FileRecv\c#实验、实习\ * | ForEach-Object{$_.LastWriteTime = ("28 June 2023 17:06:00")}
-Recurse
参数告诉Get-ChildItem
命令要递归地搜索目标目录及其所有子目录,以获取所有文件和文件夹。这样,命令将返回目标目录下的所有文件和文件夹,以及它们的子目录中的文件和文件夹,以此类推。
查看文件夹中所有文件的修改日期、创建日期和上次写入日期数据
Get-ChildItem -force "D:\QQ\QQ数据\1497786960\FileRecv\c#实验、实习\*" | Select-Object Name, CreationTime, LastWriteTime, LastAccessTime
foreach ($objFile in Get-ChildItem "D:\Test\.") { '"' + $objFile.Name + '" | ' + $objFile.CreationTime + ' | ' + $objFile.LastWriteTime + ' | ' + $objFile.LastAccessTime}