我使用以管理员身份运行的快捷方式(在快捷方式选项中设置)来运行需要管理员权限的 .bat 文件。现在,每次运行时,我都必须允许它,因为 Windows 会弹出警告窗口。
我试过https://superuser.com/a/1613169/313763,但这似乎只适用于 .ps1,而不适用于 .bat 文件?
是否可以在不允许的情况下运行快捷方式?
我使用以管理员身份运行的快捷方式(在快捷方式选项中设置)来运行需要管理员权限的 .bat 文件。现在,每次运行时,我都必须允许它,因为 Windows 会弹出警告窗口。
我试过https://superuser.com/a/1613169/313763,但这似乎只适用于 .ps1,而不适用于 .bat 文件?
是否可以在不允许的情况下运行快捷方式?
我正在尝试按照此问题以编程方式更改我的 Mac 终端的背景颜色,并且接受的答案指向此CSV以获取颜色列表,以供以下使用osascript
:
tell application "Terminal"
set background color of window 1 to {65535, 33667, 49601}
end tell
我似乎找不到此灰度滑块的 RGB(?)颜色。
如果我更改为 RGB,则会看到以下内容:
但是当我用数字运行上面的脚本时25 25 25
,我看不到这种颜色——我看到的是完全的黑色。
我如何得到这个颜色?
我正在尝试使用ffmpeg -f concat
。当我使用临时文件时,它可以工作。为了整洁,最好使用管道列表。我在较早的网络帖子中看到过这样的例子。它不再起作用了,还是我遗漏了一些显而易见的东西?这里有一个脚本说明了这个问题——如果你运行test.sh x
它,它会通过创建一个临时文件来工作。如果你运行,test.sh
那么 ffmpeg 就会失败。正如脚本注释中所述,我已经尝试过使用-safe 0
和-protocol_whiteflag "file,pipe,fd"
。
#!/bin/zsh
o=test.mp4
tmp=test.tmp
if [[ "$1" == "x" ]] ; then
echo Temp file $tmp...
ls GX01000?.mp4 | perl -ne 'print "file $_"' > $tmp
ffmpeg -hide_banner -y -f concat -i $tmp -c copy $o
else
echo Pipe
ls GX01000?.mp4 | perl -ne 'print "file $_"' | \
ffmpeg -hide_banner -y -f concat -i - -c copy $o
# this command line with -safe 0 and -protocol_whitelist doesn't work either
# ffmpeg -hide_banner -y -safe 0 -protocol_whitelist "file,pipe,fd" -f concat -i - -c copy $o
fi
以下是失败案例的输出:
% ./test.sh
Pipe
[fd @ 0x6000015f0620] Protocol 'fd' not on whitelist 'crypto,data'!
[concat @ 0x12e7055f0] Impossible to open 'fd:GX010005.mp4'
[in#0 @ 0x6000002f0100] Error opening input: Invalid argument
Error opening input file -.
Error opening input files: Invalid argument
谢谢!
我正在将 Cygwin 安装从一台 Windows 10 64 位计算机复制到另一台。我以前做过这个,但不知何故丢失了配方。我正在通过网络搜索和命令行实验重建它。
我可以使用 获取软件包名称cygcheck -cdn
。根据此页面,我可以使用setup-x86_64.exe -q -P packagename1,packagename2,etc
在另一台机器上安装这些软件包。
但是,我位于公司防火墙后面,经过大量工作,我已获得访问一个镜像站点的批准。setup 命令也接受一个--site
选项。有人能指出参数语法的示例吗?例如,它是否总是以http[s]://
或为前缀ftp[s]://
,域名后面是否有其他内容,例如/cygwin
或诸如此类?我只是觉得很惊讶,至少在我的 Google 搜索中没有找到任何示例。
我有一个脚本,使用 PowerShell 行创建了一个计划任务,从创建时起运行一分钟(Get-Date).AddMinutes(1).ToString("HH:mm")
。
$Time = (Get-Date).AddMinutes(1).ToString("HH:mm")
schtasks /CREATE /S $env:computername /RU $env:username /SC ONCE /TN "!One_time_task" /TR !Task! /ST $Time
问题是我需要使用 CMD 执行相同操作,因为我无法使用 PowerShell 执行此任务。目前我必须明确地将该行编辑为所需的时间,我知道time /t
这是当前时间,有没有办法轻松地添加一分钟?
我在 osx 上使用 zsh 终端,vscode 也是如此。但从本周一开始,我就无法使用 cd 命令,也无法在 vscode 终端中使用 ng 特定命令。我检查了所有内容,并且我拥有所有内容的最新运行版本,但我就是无法独自找出问题所在... 我尝试了在 stackoverflow 和谷歌上找到的几乎所有方法,但都没有解决我的问题。有什么想法吗?我可以创建、列出、删除内容,但无法输入,这真是太荒谬了 :s ...
我尝试检查我的配置,向路径添加内容,尝试 brew doctor 查看是否有任何问题,检查是否正在运行正确的 ng 版本,以及我是否为我的 bash 使用了正确的配置文件。甚至尝试了它返回的 cd 类型。
例如cd Web
或cd ./Web
以前工作过,不是...使用 ls 命令我可以在那里看到它,可以在其中创建新文件和文件夹并删除它们,但无法使用 CD 命令进入它或它们...
$ type -a cd
cd is an alias for cd(); enter_directory
cd is a shell function
cd is a shell builtin
cd is /usr/bin/cd
我有一台运行 Server 2022 的服务器,其中有两个本地用户,一个管理员和一个标准用户。
我需要为标准用户禁用几个功能(cmd、powershell、ctrl alt del、edge 等),同时允许管理员用户在不使用 Active Directory GPO 的情况下访问它们。此机器明确且有意不在域中,因此我无法使用 AD GPO。
我已经使用了本地 GPO 编辑器,但它禁用了两个用户的功能。我需要允许管理员用户访问这些功能,同时阻止标准用户访问它们。
最好的处理方法是什么?
运算&&
符不尊重该值。尽管等于 99,%ErrorLevel%
运算符后面的命令仍会运行。%ErrorLevel%
命令
cmd /c exit 99 echo %ErrorLevel% echo %ErrorLevel% && echo %ErrorLevel% echo %ErrorLevel%
输出
99 99 99 99
根据我的理解,以下是正确的:
&&
运算符相当于if "%ErrorLevel%" equ "0"
。Echo
命令不会改变%ErrorLevel%
。我尝试使用并运行以下命令来启用延迟扩展cmd /v:on
,但它给出了相同的输出。我在控制台、.bat 文件和 .cmd 文件中测试了以下命令。
setlocal EnableDelayedExpansion
cmd /c exit 99
echo %ErrorLevel%
echo %ErrorLevel% && echo !ErrorLevel!
echo %ErrorLevel%
使用if
命令可将行为更改为我期望的行为。将以下代码更改为替换cmd /c exit 99
确实cmd /c exit 0
会将输出更改为 3 个 99 的回声,而不是 4 个 99 的回声。
命令
setlocal EnableDelayedExpansion cmd /c exit 99 echo %ErrorLevel% echo %ErrorLevel% & if "%ErrorLevel%" equ "0" echo !ErrorLevel! echo %ErrorLevel%
输出
99 99 99
wildkoala的答案似乎是正确的。&&
and||
运算符检查前一个命令的退出代码,而不是 %ErrorLevel% 变量中的当前值。
有些命令不会更新 %ErrorLevel% 变量。但是,它们仍会有一个退出代码。
您可以在此处阅读有关 ss64 中错误级别和退出代码之间的区别的更多信息。
&&
文档通常将and运算符的解释简化||
为评估 %ErrorLevel% 是否为 0。
您可以在以要评估的命令结尾的变量或脚本上使用该call
命令。这样做将强制使用最后一个命令的退出代码更新 %ErrorLevel% 变量。
例子
cmd /v:on
set command1=cmd /c exit 99
set command2=echo hide output^>nul
%command1% & echo !ErrorLevel!
99
%command2% & echo !ErrorLevel!
99
call %command2% & echo !ErrorLevel!
0
call %command1% & echo !ErrorLevel!
99
我运行以下命令以递归方式清除对某些应用程序、脚本或 NFS/SMB 造成问题的文件夹中的字符,即将 更改'
为’
、更改?
为?
(chinese char)、:
更改为:
(chinese char) 等。
$ find . -type d -execdir /usr/local/bin/rename "s/'/’/g" '{}' +
(rename
是 Aristotle Pagaltzis 的 perl 脚本)
问题是,如果给定路径在两个不同级别出现两次或两次以上上述字符,则第二次修改将失败,因为初始路径不再存在,例如,在 中/data/videos/john's pics/folder/last year's bday/folder/
,No such file or directory.
由于它有两个,因此修改将失败'
。
我正在考虑find
从下往上递归运行上述命令,但我不知道如何进行以及这是否是最佳方法。
对于我来说,使用find
或任何其他 nix 脚本/工具(awk
如)都可以。
**/**/vendor/**/**/vendor
vendor
有什么想法吗?