我正在使用Powershell和7zip:
$passwd = "password123"
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"
sz a -t7z -sfx'7z.sfx' -ppasswordstring $execname $ssftxtname
结果的密码为passwordstring
。如何替换最后一行,以便使用$passwd
变量?这样:
sz a -t7z -sfx'7z.sfx' -p$passwd $execname $ssftxtname
似乎没有给出正确的结果,因为密码输入失败。我认为这是因为有一个特定的语法可供使用?
答案 0 :(得分:2)
使用时
sz a -t7z -sfx'7z.sfx' -p$passwd $execname $ssftxtname
您实际上是将密码设置为由这些字符组成的7个字符的字符串:$, p,a,s,s,w,d
。
PowerShell正在应用它的启发式“帮助”你,认为字符串中间的美元符号可能不是对变量的引用。你可以简单地引用整个论点来说服它:
sz a -t7z -sfx'7z.sfx' "-p$passwd" $execname $ssftxtname
这样,它会将密码设置为$passwd
变量的内容。
请注意,如果您的启动配置文件中有@ KeithHill的便捷PSReadLine模块,您实际上会在键入时看到是否有字符串或变量。请注意以下三种情况。第一个是你尝试过的,但角色是字面意思。在第二个或第三个变体中添加引号表示$passwd
是一个活动变量。
答案 1 :(得分:0)
您应该将7-zip文件夹添加到PATH
环境变量中,以简化操作:
#find the 7-zip folder path
$7zPath = (Get-ChildItem "C:\Program Files","C:\Program Files (x86)" -Include "7-zip" -Recurse -ErrorAction SilentlyContinue).FullName
#add it to PATH environment variable
$env:Path += ";$7zPath;"
然后您可以直接运行7z
命令。