【发布时间】:2021-07-15 10:58:18
【问题描述】:
我正在尝试使用 csv 文件创建一个备份脚本,该脚本将包含所有本地(将存储备份)和备份(文件夹到备份)位置,并运行 robocopy 将文件从备份复制到本地文件夹。我想从用于默认文件夹(例如 env:APPDATA)的 csv 文件导入环境变量作为用于备份用户文档或公共文档中的某些文件和文件夹的位置。当我直接使用 env 变量或在脚本中使用完整路径地址时,复制操作可以正常工作。
robocopy "&env:localappdata\steam" "$backup"
但从 csv 导入时,脚本不会将其视为 env 变量。 robocopy 显示错误,因为它会选择这样的位置
Source : C:\WINDOWS\system32\$env:LOCALAPPDATA\steam\
Dest : D:\backup\steam\
以下是我正在使用的完整代码。
$path = "$PSScriptRoot\backup\"
$locations = import-csv "$PSScriptRoot\backup\local.csv" -Delimiter "," -Header 'Local','Backup','Display' | Select-Object Local,Backup,display
foreach($location in $locations){
$source = $location.Local
$source = $source.ToString()
$destination = $location.Backup
$destination = $destination.tostring()
$Name = $location.Display
$Name = $name.tostring()
Write-host "Copying $Name, please wait...." -foregroundColor Yellow
robocopy "$destination" "$path$source" \s \e
}
我的 CSV 文件看起来像这样
Steam、$env:LOCALAPPDATA\steam、Steam 文件备份
【问题讨论】:
-
我们还没有收到您的来信.. 作为 SO 新手,您可能不知道这一点,但习惯上点击左侧的 ✓ 图标 accept the answer that best solved your problem .这将有助于其他有类似问题的人更轻松地找到它,并有助于激发人们回答您的问题。
标签: powershell csv environment-variables robocopy