我经常使用图标,并且需要通过像素预览快速检查它们的外观。当我构建它们时,我启用了网格,并且画板可见。
我真的想要一个只需单击一下即可执行以下操作的脚本:
隐藏画板
隐藏所有指南
隐藏网格
将像素预览切换为开。
然后另一个脚本将完全反转上述切换。
不幸的是,我找不到一种方法来查询应用程序的状态以确定画板边框是否已隐藏,或者网格是否已隐藏等。
这是现在的简单脚本:
//@target illustrator
preferences.setBooleanPreference("ShowExternalJSXWarning", false); // Fix drag and drop a .jsx file
function main() {
var SCRIPT = {
name: "Toggle Preview Mode",
version: "v.0.1"
};
if (!documents.length) {
alert("Error\nOpen a document and try again");
return;
}
app.executeMenuCommand("showgrid");
app.executeMenuCommand("showguide");
app.executeMenuCommand("raster");
app.executeMenuCommand("artboard");
}
try {
main();
} catch (e) {}
Run Code Online (Sandbox Code Playgroud)
但问题是,如果网格已经隐藏,当我想隐藏它时,脚本会将其重新打开。同样,还有参考线/像素预览/画板可见性。有没有办法查询每个属性的状态?
基本上我想这样做:(请原谅伪代码)
if(guidesAreHidden=true){ //do nothing }
if(gridIsHidden=true){ //do nothing }
if(pixelPreviewIsOn=true){ //do nothing }
if(artboardsAreHidden=true){//do nothing }
Or a more complex example …Run Code Online (Sandbox Code Playgroud) 这是我当前的表达:https://regex101.com/r/BertHu/4/
\n^(?:(?:[a-z]:|\\\\\\\\[a-z0-9_.$\xe2\x97\x8f-]+\\\\[a-z0-9_.$\xe2\x97\x8f-]+)\\\\|\\\\?[^\\\\\\/:*?"<>|\\r\\n]+\\\\?)*(?:[^\\\\\\/:*?"<>|\\r\\n]+\\\\)*[^\\\\\\/:*?"<>|\\r\\n]*$\nRun Code Online (Sandbox Code Playgroud)\n我使用的正则表达式基于Oreilly 的实现。
\n这是一个故障(我必须修复 Oreilly 表达式中的一些未转义字符):
\n(?:(?:[a-z]:|\\\\\\\\[a-z0-9_.$\\\xe2\x97\x8f-]+\\\\[a-z0-9_.$\\\xe2\x97\x8f-]+)\\\\| # Drive\n\\\\?[^\\\\\\/:*?"<>|\\r\\n]+\\\\?) # Relative path\n(?:[^\\\\\\/:*?"<>|\\r\\n]+\\\\)* # Folder\n[^\\\\\\/:*?"<>|\\r\\n]* # File\nRun Code Online (Sandbox Code Playgroud)\n我正在 PowerShell 中实现此功能,并且表达式不区分大小写。
\n我遇到的问题是它与以下格式错误的路径匹配(并且我确信还有更多类似的路径):C:\\foo\\C:\\bar
我无法确切理解为什么会发生这种情况,但我相信这与表达式的驱动部分有关:
\n^(?:(?:[a-z]:|\\\\\\\\[a-z0-9_.$\xe2\x97\x8f-]+\\\\[a-z0-9_.$\xe2\x97\x8f-]+)\\\\|
我不知道如何:从上面排除第二个。也许我完全忽略了一些显而易见的事情。
任何帮助都将非常感激,因为我花了一整天的时间来研究这个表达式。
\n非常感谢。
\nfunction Test-IsAdministrator
{
$Identity = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$Principal = New-Object System.Security.Principal.WindowsPrincipal($Identity)
$Principal.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
}
function Test-IsUacEnabled
{
(Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System).EnableLua -ne 0
}
if (!(Test-IsAdministrator))
{
if (Test-IsUacEnabled)
{
[string[]]$argList = @('-NoProfile', '-NoExit', '-File', $MyInvocation.MyCommand.Path)
$argList += $MyInvocation.BoundParameters.GetEnumerator() | ForEach-Object {"-$($_.Key)", "$($_.Value)"}
$argList += $MyInvocation.UnboundArguments
Start-Process PowerShell.exe -Verb Runas -WorkingDirectory $pwd -ArgumentList $argList
return
}
else
{
throw "You must be an administrator to run this script."
}
}
Run Code Online (Sandbox Code Playgroud)
如果我运行上面的脚本,它会成功生成另一个具有提升权限的 PowerShell 实例,但当前工作目录会丢失并自动设置为C:\Windows\System32. 绑定参数也会丢失或错误解析。
在阅读类似的问题后,我了解到,当将 Start-Process 与 -Verb RunAs 一起使用时,仅当目标可执行文件是 …
我正在创建一个函数,我想验证传递给我的函数的字符串是否是格式正确的路径。Test-Path 确定路径是否存在,这是我不想要的。有没有正则表达式可以做到这一点?或者其他一些本机 Cmdlet?
谢谢。
powershell ×3
path ×2
admin ×1
elevation ×1
extendscript ×1
javascript ×1
regex ×1
string ×1
validation ×1