动态变量&对象

时间:2016-02-02 06:55:14

标签: powershell

尝试创建一个脚本,该脚本将读取包含许多包含客户数据的“配对”数据集的目录的内容,对于每个客户,将有2个数据集,其命名约定在表单中一致显示: CustomerNo_DataType .csv 其中 CustomerNo 将始终为数字字符串值。

我已经写了这个脚本的粗略版本,客户编号是硬编码的,所以现在我正在努力改进 - 这就是我到目前为止所做的:

$files = Get-ChildItem "Path-to-data-files"
$files = $files.FullName
for ($i=0; $i -le $files.Count; $i++){
    $thisFile = $files[$i].Split("\")

这给我留下了一个数组,其中完整的路径名被分解为组件,所以我从数组的最后一个位置获取文件名

    $thisFile = $thisFile[$thisFile.Count - 1]
    ...
}

我想使用客户号来创建哈希表,所以如果文件名中的客户号码是12345,那么我想创建一个名为$12345的哈希表 - 我访问该值时没有任何问题,只是不知道如何用它来命名。

1 个答案:

答案 0 :(得分:0)

使用Split-Path获取路径的文件元素:

$file = Split-Path 'C:\path\to\some\file.txt' -Leaf

如果由于某种原因需要从变量中定义变量名称,请使用New-Variable

$customerNo = '12345'
New-Variable -Name $customerNo -Value @{}

但是,我不建议创建一堆动态命名的变量。如果你创建一个父母"它通常会更容易处理。动态名称的哈希表。如果需要,可以在其中包含嵌套的哈希表:

$customerNo = '12345'
$customers = @{}
$customers[$customerNo] = @{}