情况如下:
PS C:\Users\user> copy %USERPROFILE%\AppData\Local\Thing %USERPROFILE%\AppData\Local\Thing.backup
copy : Cannot find path 'C:\Users\user\%USERPROFILE%\AppData\Local\Thing' because it does not
exist.
At line:1 char:1
+ copy %USERPROFILE%\AppData\Local\Thing %USERPROFILE%\AppData\ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\user...\Thing:String) [Copy-Item], ItemN
otFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.CopyItemCommand
它在文字 %USERPROFILE% 前面插入扩展的 %USERPROFILE%。
它在做什么?我该如何阻止它?
答案1
在 powershell 中你需要使用$env:UserProfile
:
copy "$($env:USERPROFILE)\AppData\Local\Thing" "$($env:USERPROFILE)\AppData\Local\Thing.backup"
- 要将字符串与变量连接起来,您需要使用自我表达运算符
$()
。 - 实际上
copy
是 powershell Cmdlet 的别名Copy-Item
。
旁注:如果您需要使用文字,'%USERPOFILE%'
则使用-LiteralPath
或使用单引号。