批处理中shift /n的什么意思

本文详细解析了Shift/2命令在编程中的作用,通过实例展示了如何逐行操作变量%1、%2和%3,以及它在求和代码中的实际效果。阅读者将对位移操作有深入理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.查看帮助文件

命令:Shift /?

解释shift /2是将%3转移到%2,将%4转移到%3,以此类推。%2之前的不影响。


2.看一段代码

对15,20,30三个数进行求和,在18行处使用了shift /2 。

22115f61aec04695a4b805c2e3ac4af5.png

注意14.15行,执行代码输出结果如下:

059a391f2be942b0bb8632ef5c98f18b.png

执行过程:

首先输出:%1和%2是sum和15,毫无疑问。

>执行shift /2,把%3转移到2%传递,%4转移给了%3 (后面没有参数了,此时%4为"")

所以输出:%1仍是sum,%2为20

>执行shift /2,还是把%3转移到%2。此时的%3又是原来的%4(上一步shift执行的结果)

所以输出:%1仍是sum,%2为30

 

 

:D记录完上面执行过程,自己倒是更明白其中的意义,愿对你也有一丁点的帮助。

 

 

 

 

 

@echo off %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0" echo The beginning of Init Database. echo Running initdb.bat... :param set user=%1 set password=%2 set dir=%3 set data=%4 set port=%5 set port=%port:"=% set encoding=%6 set block_size=%7 set mode=%8 set case-insensitive=%9 set iscase= if %case-insensitive%=="no" ( set iscase=--enable-ci ) ::reset the number for variables shift /1 shift /1 shift /1 shift /1 shift /1 shift /1 shift /1 shift /1 shift /1 ::Authentication Method set AuthenticateMethod=%1 set custom=%2 set custom=%custom:"=% echo custom_value=%custom% ::default means the parameters NOT required set encoding=%encoding:"=% set ENCODE="-E %encoding%" if %encoding%==default ( set ENCODE= ) ::default means the parameters NOT required set allparam=%allparam% %str% shift /0 goto init :init cd /d %dir%\Server\bin\ ::initdb.exe %iskmonitor% %iskfs% -U %user% -x %password% -D %data% --locale=C -E %encoding% --block-size=%block_size% %case-insensitive% -m %mode% initdb.exe -U %user% -x %password% -D %data% --locale=C %ENCODE% --lc-messages=C --block-size=%block_size% %iscase% -m %mode% -A %AuthenticateMethod% %custom% if not %ERRORLEVEL%==0 ( exit ) goto change_port :change_port setlocal enabledelayexpansion cd /d %data% for /f "delims=:" %%a in ('type kingbase.conf^|findstr /nic:"#port = 54321"')do set #%%a=y (for /f "tokens=1* delims=:" %%a in ('type kingbase.conf^|findstr /n .*') do ( if defined #%%a (echo port=%port%)else echo.%%b ))>kingbase_bak.conf move kingbase_bak.conf kingbase.conf echo Init Database Finish.
最新发布
06-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值