我有一个批处理文件,它使用不同的参数反复调用相同的可执行文件.如果其中一个调用返回任何级别的错误代码,如何使其立即终止?
基本上,我想要相当于MSBuild的ContinueOnError=false.
我需要使用MS批处理文件将程序的输出分配给变量.
所以在GNU Bash shell我会用VAR=$(application arg0 arg1).我在Windows中使用批处理文件需要类似的行为.
有点像set VAR=application arg0 arg1.
在Bash环境中工作时,要将变量的值设置为命令的结果,我通常会这样做:
var=$(command -args)
Run Code Online (Sandbox Code Playgroud)
where var是由命令设置的变量command -args.然后我可以访问该变量$var.
执行此操作的更常规方法几乎与每个Unix shell兼容:
set var=`command -args`
Run Code Online (Sandbox Code Playgroud)
也就是说,如何在Windows批处理文件中使用命令的结果设置变量的值?我试过了:
set var=command -args
Run Code Online (Sandbox Code Playgroud)
但我发现这var是设置command -args而不是命令的输出.
使用Bash时,我可以将一个命令的输出放到另一个命令中,如下所示:
my_command `echo Test`
Run Code Online (Sandbox Code Playgroud)
会是一样的
my_command Test
Run Code Online (Sandbox Code Playgroud)
(显然,这只是一个非实际的例子.)
我只是想知道你是否可以批量做同样的事情.
您可以将命令的输出重定向到带管道的变量吗?
我没有尝试太多,因为我没有想到任何尝试,但我尝试了一种方法(有两种变化)......
例如:
echo Hello|set text=
Run Code Online (Sandbox Code Playgroud)
没有工作,也没有:
echo Hello | set text=
Run Code Online (Sandbox Code Playgroud)
我知道你可以用FOR命令轻松地做到这一点,但我认为用管子看起来会"更好".
如果你想知道,我没有特别的理由我问这个,除了我很好奇,我找不到答案.
我正在尝试将命令的输出分配给变量 - 例如,我正在尝试将当前的flash版本设置为变量.我知道这是错的,但这是我试过的:
set var = reg query hklm\SOFTWARE\Macromedia\FlashPlayer\CurrentVersion>
要么
reg query hklm\SOFTWARE\Macromedia\FlashPlayer\CurrentVersion >> set var
是的,你可以看到我有点失落.任何和所有的帮助表示赞赏!
如何在Dockerfile中添加git commit hash或任何其他动态推断值.
LABEL vcs-ref=$(git rev-parse --short HEAD)
Run Code Online (Sandbox Code Playgroud)
像这样的东西?
我为实现这一非常简单的任务而疯狂。我需要在Visual Studio Team Services上的Azure CLI任务中设置一个Output Variable,因为Release定义中的下一个任务将根据该变量的值执行。
我写了这个简单的代码
call az extension add --name azure-cli-iot-ext
call echo ##vso[task.setvariable variable=iotEdgeExists;]$(az iot hub query -n $(iotHub) -q "select * from devices.modules where devices.deviceId ='$(iotEdge)'")
Run Code Online (Sandbox Code Playgroud)
确实有效,但不是预期的,实际上,当我在下一个Azure CLI任务中读取Ouput变量并尝试在屏幕上打印时,我得到了命令字符串而不是输出...
call echo"$(az iot hub query -n <IOT_HUB> -q "select * from devices.modules where devices.deviceId ='<IOT_EDGE>'")"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
azure azure-cli azure-devops azure-pipelines-release-pipeline azure-cli2
我正在尝试使用 FFMPEG 修剪/切断视频的最后 3 秒,但这确实令人头疼。
以下代码修剪但仅保留最后 3 秒。我不想保留 3 秒,我不需要那个,我想保留已删除的部分。
ffmpeg -sseof -3 -i input.mp4 output.mp4
有人可以帮我提供正确的代码吗?我还想请求一个批处理代码,该代码将自动修剪我文件夹中所有最后 3 秒的视频。谢谢您的帮助。
我需要创建一个Windows批处理脚本,该脚本创建一个特定文件并将其移动到PYTHONPATH\Lib\distutils文件夹。
这是我正在尝试做的事情:
ECHO [build] >> distutils.cfg
ECHO compiler=mingw32 >> distutils.cfg
MOVE distutils.cfg PYTHONPATH\Lib\distutils
Run Code Online (Sandbox Code Playgroud)
但是,PYTHONPATH不存在,但是我知道可以在PATH其中设置Python位置。如何解析PATH和提取Python位置?
由于 OneDrive 同步,我已将 Windows /Desktop 文件夹移动到其他位置。
结果,我指向的批处理和 Powershell 脚本%USERPROFILE%/Desktop不再起作用。有没有另一种方法可以在不硬编码新路径的情况下获取我的桌面位置?
windows powershell batch-file environment-variables special-folders
batch-file ×9
windows ×3
cmd ×2
azure ×1
azure-cli ×1
azure-cli2 ×1
azure-devops ×1
azure-pipelines-release-pipeline ×1
backticks ×1
bash ×1
docker ×1
dockerfile ×1
ffmpeg ×1
flash ×1
path ×1
powershell ×1
python ×1
pythonpath ×1
registry ×1
scripting ×1
variables ×1
video ×1