我想创建一个包含两组命令的批处理文件:
@echo off
set varip=10.0.80.40
REM WRITE YOUR COMPUTER IP ABOVE
set vardefaultgway=10.0.80.1
set varsubnetmask=255.255.255.192
netsh interface ip set address name="Ethernet" static %varip% %varsubnetmask% %vardefaultgway%
@echo off
netsh interface ipv4 set address name="Ethernet" source=dhcp
所以现在我想要一个以下格式的批处理文件。
@echo off
REM BOOLEAN_VALUE
REM //some code here that reads the BOOLEAN_VALUE and goes to command-set-1 or command-set-2 depending on the result
:1
set varip=10.0.80.40
REM WRITE YOUR COMPUTER IP ABOVE
set vardefaultgway=10.0.80.1
set varsubnetmask=255.255.255.192
netsh interface ip set address name="Ethernet" static %varip% %varsubnetmask% %vardefaultgway%
REM //some code to change the BOOLEAN_VALUE i.e. a toggler
exit
:2
netsh interface ipv4 set address name="Ethernet" source=dhcp
REM //some code to change the BOOLEAN_VALUE i.e. a toggler
exit
基本上,我需要一个具有BOOLEAN_VALUE的批处理文件 占位符。批处理文件需要执行以下两个功能:
1.批处理文件需要读取自身中的值 第二行和第四个字符。
2.完成任何一组命令后,批处理文件必须在退出前更改其占位符中的值(即BOOLEAN_VALUE)。
我希望我已经清楚了。这可以成就吗?
答案 0 :(得分:1)
此解决方案正是您在问题中所要求的:
@echo off
REM Y
REM This is the code that reads the BOOLEAN_VALUE and goes to command-set-1 or command-set-2 depending on the result
for /F "usebackq skip=1 tokens=2" %%a in ("%~F0") do set "BOOLEAN_VALUE=%%a" & goto continue
:continue
ECHO BOOLEAN_VALUE=%BOOLEAN_VALUE%
IF %BOOLEAN_VALUE% EQU Y GOTO 2
:1
set varip=10.0.80.40
REM WRITE YOUR COMPUTER IP ABOVE
set vardefaultgway=10.0.80.1
set varsubnetmask=255.255.255.192
netsh interface ip set address name="Ethernet" static %varip% %varsubnetmask% %vardefaultgway%
GOTO UPDATE_BOOLEAN_VALUE
:2
netsh interface ipv4 set address name="Ethernet" source=dhcp
:UPDATE_BOOLEAN_VALUE
REM The code to change the BOOLEAN_VALUE i.e. a toggler
if %BOOLEAN_VALUE% equ Y (set "BOOLEAN_VALUE=N") else set "BOOLEAN_VALUE=Y"
(
echo @echo off
echo REM %BOOLEAN_VALUE%
for /F "usebackq skip=2 delims=" %%a in ("%~F0") do echo %%a
) > _new_.bat
move /Y _new_.bat "%~F0" > NUL
echo BOOLEAN_VALUE updated
exit
请注意,您不能插入空白行;为了管理程序中的空白行,需要进行修改。
答案 1 :(得分:0)
您可以使用
将Boolean_value
设置为 nothing
set "Boolean_value="
或某个值 - 您喜欢的任何值,例如
set "Boolean_value=Y"
然后使用
if defined Boolean_value (doonething) else (doanotherthing)
如果这就是你想要的......
答案 2 :(得分:0)
@echo off
(<%~f0:bool set /p bool=) 2>nul
set /a bool=1-bool
>%~f0:bool echo %bool%
if %bool%==1 goto :1
echo do one thing
goto :eof
:1
echo do other thing
第2行从备用数据流中获取数据(技术上是绑定到主文件的辅助文件,但它不是自己的文件)
第3行在0
和1
之间切换
第4行将切换的值写回备用数据流