【发布时间】:2022-01-24 02:53:12
【问题描述】:
目的:我想创建一个 .bat 文件来在我垂直翻转显示器时旋转我的屏幕,因为我没有找到任何方法来访问显示器的当前状态以使用,我正在尝试使用变量如:每次我启动计算机时,变量 isTurned=1(这意味着显示器旋转),我希望这个 .bat 文件根据这个值改变显示器的旋转。如果显示器是垂直的,旋转到水平,如果是水平的,旋转到垂直。
我正在处理一个批处理文件,这个 %isTurned% 是一个以 1 开头的环境变量。 问题是,当我双击 .bat 文件时,第一个 IF 内的变量不会变为 0。但是,如果我使用 CMD 执行 .bat 文件,它就可以工作。对此有任何想法吗? 打开monitor.bat:
IF %isTurned% == 1 (
SET isTurned=0
C:\Users\user\multimonitortool-x64\MultiMonitorTool.exe /SetOrientation 5 0
echo %isTurned%
)ELSE (
SET isTurned=1
C:\Users\user\multimonitortool-x64\MultiMonitorTool.exe /SetOrientation 5 90
echo %isTurned%
)
pause
【问题讨论】:
-
如果我正确阅读了您的问题,您已经拥有一个现有的 CMD 环境,其中
isTurned为 1,并且您希望双击该脚本将值同时变为 0环境。那是对的吗?如果是这样,它不会起作用,因为每次通过双击运行脚本时,都会启动一个单独的命令提示符实例,因此isturned在新的实例中设置为 0,但旧值仍然存在在上一个。 -
此外,如果未定义
%isturned%,则当前发布的此代码只会返回语法错误。用双引号将您的匹配条件括起来。IF "%isTurned%" == "1" ( -
@SomethingDark 我创建了一个名为 isTurned 的环境变量,我想动态更改它。我将编辑帖子以更好地理解
-
只有
setx命令可以永久更改系统变量。有一个警告。它仅适用于新实例。 -
您的
echo命令由于缺少delayed variable expansion 而返回错误/以前的值;放置set isTurned来指示真正的变量值...
标签: windows batch-file environment-variables