读取输入和移动具有相似名称的文件

时间:2015-08-14 12:44:20

标签: powershell file-move

我正在尝试创建一个脚本,该脚本读取文件的第一行,然后将具有类似命名约定的所有文件移动到一个级别。

这些是3个示例文件:

C:\Users\USERNAME\location\PYYYYYYYYY.txt.asc
C:\Users\USERNAME\location\holdingarea\PYYYYYYYYY.tt.asc
C:\Users\USERNAME\location\holdingarea\PYYYYYYYYY.t.asc

我到目前为止的脚本是:

$location = Read-Host -Prompt "Location Filename"
$locationfilename = Select-String C:\Users\USERNAME\location\holdingarea\*.txt.asc –pattern $location  -Context 1
$locationfilenames = $locationfilename.basename
$locationarea = "C:\Users\USERNAME\location\holdingarea"
$locationlocation = "C:\Users\USERNAME\location"

Select-String C:\Users\USERNAME\location\holdingarea\*.txt.asc -Pattern $location -Context 1 |
  Out-File -Append C:\Users\USERNAME\location\logs.txt
Move-Item -Path "$locationfilenames" -Destination "$locationlocation"

1 个答案:

答案 0 :(得分:0)

您的问题出现在这里:

$locationfilename = Select-String C:\Users\USERNAME\location\holdingarea\*.txt.asc –pattern $location  -Context 1

假设您只是尝试获取文件名,这应该有效:

$lcoationfilename = $location | Split-Path -Leaf

如果它是你之后的父文件夹,那么这是合适的:

$lcoationfilename = $location | Split-Path -Parent

如果由于某种原因您使用的是没有拆分路径的PS版本,请告诉我,我会编辑一个更合适的解决方案。