bat中如何处理mybatis参数有单引号的引号

用户对问题“从批处理文件中的变量中删除双引号会导致CMD环境出现问题”的回答 - 问答 - 云+社区 - 腾讯云云+社区首页任何人都可以帮助从批处理变量中删除引号的有效且安全的方法吗?我写了一个成功导入参数%1,%2,%3等列表的批处理文件,并将它们放入命名变量中。其中一些参数包含多个单词,因此用双引号引起来。& &Susie Jo& (%1)
& &Smith Barnes& (%2)
& &123 E. Main St.& (%3)
这些%变量接下来放置在命名变量中:& set FirstName=%1
& set LastName=%2
& set ShipAddr=%3
变量的验证由回声完成。 echo。%FirstName%
echo。%LastName%
echo。%ShipAddr%
结果显示为&Susie Jo&
&Smith Barnes&
&123 E. Main St.&
我需要消除所选变量中包含的引号。例如,FirstName和LastName在其他地方使用,不得包含引号。在测试批处理文件中,我成功地在变量中使用?tilde字符消除了引号。& set FirstName=%~1
& set LastName=%~2
我以为我有解决方案,但很快就会遇到批处理文件执行异常的情况。突然CMD不认可长路径的说法。从完整路径正常执行批处理文件& C:\Documents and Settings\Administrator\My Documents\Txt\batchtest\dataout.bat
回报& 'C:\Documents' is not recognized as an internal or external command....
所以看起来,在?%1%2 ...%n变量中添加?代字符已经引起了一些变化。可能某些环境变量已被更改?我还尝试使用FOR命令从各种尝试中清除变量中的引号。这似乎很尴尬,我一直无法学习如何通过创建一个变量列表来完成这个任务:像这样的东西:for %%g in (%FirstName% %LastName%) do (
set %%g=%%~g
set %%h=%%~h
set FirstName=%%~g
set LastName=%%h
echo.%FirstName% %LastName%
我想我有两个问题。 1)在传入的%1%2变量(%?1等)中插入?代字符的'短而甜的'想法似乎影响了一些设置,并改变了CMD如何导航长路径名。2)我仍然在寻找一种干净简单的方法来消除选定命名变量中的引号。
对于那些更有经验的人的任何帮助将是最感激的。我在这里结束了我的技能......需要一些指导! PST整个批处理文件: Blockquote:: dataout.bat:: revision 12/25/2009 add ~tilde to incoming %variables to eliminate embedded &quotation marks.:: writes address list using command line parameters:: writes data output list for QBooks IIF import:: writes Merchant Order data for RUI:: sample command line string for testing:: listmail[firstname][lastname][&address string&][&city string&][state][zip][Order#][PurchDate][Regname][&FirstName LastName&][TransactionID][PaymentMethod][Total][ProductID][Qty][Price_Each][PackPrep] [Shipping] [CommissionPmt] [Invoice#]:: example: dataout Bellewinkle Moose &123 Green Forest Way& &Vancouver& WA 8 05/25/2009 &Bellewinkle Moose& &Olive Oyl& 101738 &On Account& 20.67 FK-1P 1 8.95 3.00 1.39 239@echo offclsc:cd\cd documents and settings\administrator\my documents\txt\batchtestecho processing %1 %2:VARISET:: Convert %n command line parameters to string variablesset ($FirstName)=%~1set ($LastName)=%~2set ($BillingAddress1)=%~3set ($BillingCity)=%~4set ($BillingState)=%~5set ($BillingPostal)=%~6set ($OrderNumber)=%~7set ($Purch_Date)=%~8set ($RegistrationName)=%~9shiftset ($TransactionID)=%~9shiftset ($PaymentMethod)=%~9shiftset ($Total)=%~9shift set ($ProductIdentifier)=%~9shiftset ($Quantity)=%~9shiftset ($Price_Each)=%~9shiftset ($Pack_Prep)=%~9shiftset ($Shipping)=%~9shiftset ($ServiceFee)=%~9shiftset ($Discount)=%~9shiftset ($Invoice)=%~9shiftset ($UnitPrice)=%~9set _ShipCombName=%($FirstName)% %($LastName)%echo ship combo name is %_ShipCombName%pause:: write string varibables to logfileecho FN %($FirstName)% LN %($LastName)% BA %($BillingAddress1)% %($BillingCity)% %($BillingState)% %($BillingPostal)% %($OrderNumber)% %($Purch_Date)% %($RegistrationName)% %($TransactionID)% %($PaymentMethod)% %($Total)% %($ProductIdentifier)% %($Quantity)% %($Price_Each)% %($Pack_Prep)% %($Shipping)% %($ServiceFee)% %($Discount)% %($Invoice)% %($UnitPrice)% %_ShipCombName% && d_out_log.txt:: Assign Account by Service ProviderIF /i %($PaymentMethod)%==Amazon Receivables SET _QBAcct=Amazon.com:: 12-25-2009 added second Amazon pm't method for versatilityIF /i %($PaymentMethod)%==Amazon SET _QBAcct=Amazon.comIF /i %($PaymentMethod)%==MAST SET _QBAcct=Auth/NetIF /i %($PaymentMethod)%==MasterCard SET _QBAcct=Auth/NetIF /i %($PaymentMethod)%==Visa SET _QBAcct=Auth/NetIF /i %($PaymentMethod)%==PayPal SET _QBAcct=PayPalPmtsIF /i %($PaymentMethod)%==On Account SET _QBAcct=%($RegistrationName)%IF /i %($PaymentMethod)%==Mail SET _QBAcct=%($RegistrationName)%IF /i %($PaymentMethod)%==AMER SET _QBAcct=Auth/NetIF /i %($PaymentMethod)%==DISC SET _QBAcct=Auth/Net:: Assign Rep designator based on QBAccountIF /i %($PaymentMethod)%==Amazon Receivables SET _Rep=Amazon:: 12-25-2009 added second Amazon pm't method for versatilityIF /i %($PaymentMethod)%==Amazon SET _Rep=AmazonIF /i %($PaymentMethod)%==MAST SET _Rep=BlueZapIF /i %($PaymentMethod)%==MasterCard SET _Rep=BlueZapIF /i %($PaymentMethod)%==Visa SET _Rep=BlueZapIF /i %($PaymentMethod)%==PayPal SET _Rep=BlueZapIF /i %($PaymentMethod)%==On Account SET _Rep=R BIF /i %($PaymentMethod)%==Mail SET _Rep=R BIF /i %($PaymentMethod)%==AMER SET _Rep=BlueZapIF /i %($PaymentMethod)%==DISC SET _Rep=BlueZap:: check for duplicate address datafindstr /i /s &%_ShipCombName%& addrlist.txtecho errorlevel: %errorlevel%if errorlevel 1 goto :ADDRWRITEif errorlevel 0 goto :ADDRFOUND:ADDRWRITEecho %_ShipCombName% && addrlist.txtecho %($BillingAddress1)% && addrlist.txtecho %($BillingCity)% %($BillingState)% %($BillingPostal)% && addrlist.txtecho. && addrlist.txtecho Address File Written:ADDRFOUNDecho selected rep is %_Rep%echo selected account is: %_QBAcct%pause:: RUI OUT:: write Merchant Order ID & RUI Order ID to RUI:: check for duplicate RUI data in writeRUI.txtcd..cd RegKOutfind /i &%($OrderNumber)%& writeRUI.txtecho errorlevel: %errorlevel%if errorlevel 1 goto :RUIWRITEif errorlevel 0 goto :IIFWRITE:RUIWRITEecho %($Invoice)% %($OrderNumber)% && writeRUI.txt:: end write RUI:: IIF OUT:IIFWRITE:: Check for duplicate invoice data in writeIIF.txtfind /i &%($OrderNumber)%& writeIIF.txtecho errorlevel: %errorlevel%if errorlevel 1 goto :HEADWRITEif errorlevel 0 goto :LINEWRITE:HEADWRITE:: write Header, Ship/Handling, discount, Rep & commission data to QB IIF import fileecho %($OrderNumber)% %($Purch_Date)% Invoice %($TransactionID)% %_QBAcct% Accounts Receivable %($Total)% %_Rep% && writeIIF.txtecho H/P %($Pack_Prep)% 1 ? && writeIIF.txtecho SHP %($Shipping)% 1 ? && writeIIF.txtecho DISC %($Discount)% 1 ? && writeIIF.txtecho Comm %($ServiceFee)% 1 ? && writeIIF.txt:LINEWRITEIF /i %($ProductIdentifier)% equ PH-1 goto WRITE_DEFA ELSE goto WRITE_DISCecho %($ProductIdentifier)%:WRITE_DISC::writes discounted prices parsed from custom variable:echo %($ProductIdentifier)% %($Price_Each)% %($Quantity)% ? && writeIIF.txtgoto :EOF:WRITE_DEFA:writes default prices parsed from Product dataecho %($ProductIdentifier)% %($UnitPrice)% %($Quantity)% ? && writeIIF.txtgoto :EOF:: 3-second delay:: TYPE NUL | CHOICE.COM /N /CY /TY,3 &NUL:EOF写回答邀请回答从批处理文件中的变量中删除双引号会导致CMD环境出现问题写回答你的结论(1)听起来不对。必须发挥其他一些因素。批处理文件参数中的引号问题通常通过删除引号%~并在适当的时候手动将其放回来解决。例如:set cmd=%~1
set params=%~2 %~3
&%cmd%& %params%
注意周围的引号%cmd%。没有他们,路径与空间将无法工作。如果你可以发布你的整个批处理代码,也许可以做出更具体的答案。热门问答用户画像的标签有以下几个维度:
1、自然特征/基本属性
如性别、年龄、体形、地域、职业、教育程度等
2、消费特征/购买能力:如婚否、收入、车、房、孩子、购物类型、品牌偏好、信用水平、购买周期等
3、社会特征/行为特征:如婚姻状况、家庭构成、社交偏好、信息渠道等
4、兴趣特征/心理...... 如果想将腾讯云提供的Demo换成自己的服务器,可以做以下步骤。
1. 搭建 &webrtc-room& 的服务器
1.1 这个服务器能做什么?
点击demo里的互动课堂 &webrtc-room& 功能,您会看到一个房间列表,这个房间列表是怎么实现的呢?
在看到视频房间列表以后,...... 可以安装PyFilter软件,它的目的是过滤掉服务器的所有非法登录请求。它的工作原理是读取防火墙日志文件,并在用户可配置的时间内检查请求是否来自同一IP地址。如果它捕获了太多失败的尝试,则会向防火墙添加规则,从而拒绝其连接到服务器。
下载和配置PyFilter
从Github克...... 虚拟化技术是指计算元件在虚拟的基础上而不是真实的基础上运行,它可以扩大硬件的容量,简化软件的重新配置过程,减少软件虚拟机相关开销和支持更广泛的操作系统方面。通过虚拟化技术可实现软件应用与底层硬件相隔离,它包括将单个资源划分成多个虚拟资源的裂分模式,也包括将多个资源整合成一个虚拟资...... 建议使用mosh。
需在客户端和服务器上安装Mosh。
Ubuntu上:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:keithw/mosh
sudo apt-get...... 1、对称加密算法
所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。
常用的算法有:DES、3DES、AES等。
全称为Data Encryption Standard,即...... 扫描二维码扫描关注云+社区找不到答案?
vbs无法隐藏运行BAT怎么回事?
用vbs隐藏运行bat,本来可以不显示黑框的,用优化大师优化了之后,再点vbs文件来运行bat的时候就没法隐藏黑框了,这是怎么回事啊?
vbs的程序代码如下,比方我想隐藏运行同目录下的start.bat
set WshShell = CreateObject("WScript.Shell")
cmd=WshShell.RUN("start.bat", runhide)
按投票排序
按时间排序
<dd id="vote_num_
set ws=wscript.createObject("wscript.shell')
iReturn=ws.Run("cmd.exe /c d:start.bat", 0, TRUE)
将d:start.bat换为你的BAT路径,再试试。
<dd id="vote_num_
set ws=wscript.createObject("wscript.shell')
iReturn=ws.Run
<dd id="vote_num_
========================================
set ws=wscript.createObject("wscript.shell')
iReturn=ws.Run("cmd.exe /c d:start.bat", 0, TRUE)
将d:start.bat换为你的BAT路径,再试试。
=========================================
这个("wscript.shell'),他把双引号写错了,应该是("wscript.shell")
补充一下你后来问我的问题:有几种BAT命令是无法用VBS彻底隐藏其运行窗口的,但仅仅也只有那几种命令不能隐藏,不知你的是什么命令了。 有问题可以随时到我空间留言。
<dd id="vote_num_
wscript.createObject("wscript.shell').Run("""cmd.exe /c ""d:start.bat""""", 0)
REM 可能是带空格cmd不识别。(请将d:start.bat换为你的BAT路径)
REM 希望能够帮到你
登录后可回答问题,请
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
RDS是一种稳定可靠、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、PostgreSQL、高...BAT 参数去引号(各种去引号的奇葩方式)
转载 &更新时间:日 00:59:41 & 作者:
这篇文章主要介绍了BAT 参数去引号,各种去引号的奇葩方式,需要的朋友可以参考下
很多情况下,我们需要脱除一个字符串中可能会存在的引号,然后在加上自己的引 号使其中的特殊字符(命令连接符& 、| 、&&、||,命令行参数界定符Space 、tab 、 ; 、= ,字符化转义符^ 、" ,变量化转义符% 等)字符化,失去特定的作用,而作为 普通的字符成为字符串的一个组成部分。
  一、将字符串中的引号脱去的简单办法有三种,它们的功能相近,只是各自的使用 场合不同,可以处理大多数的情况。
  1-1 、如果字符串存在于命令行参数%1中,可以使用%~1 脱去第一对外侧引号,如 果没有外侧引号则字符串不变;
  1-2 、如果字符串存在于for 替代变量%%i 中,可以使用%%~i脱去第一对外侧引号, 如果没有外侧引号则字符串不变;
  1-3 、如果字符串存在于环境变量%temp%中,可以使用%temp:"=% 脱去其中所有的 引号,如果没有引号则字符串不变;
  1-4 、以上三种方案在某种程度上可以互相通用,因为它们作为变量的一种类型, 可以通过类似以下的代码或代码片断相互转移:
&&&&& 1-4-1、for替代变量转命令行参数: call:DeQuote %%i&&&&&& 1-4-2、环境变量转命令行参数:call:DeQuote %temp%&&&&&& 1-4-3、命令行参数转for替代变量:for %%i in (%1) do ...&&&&&& 1-4-4、环境变量转for替代变量:for %%i in (%temp%) do ...&&&&&& 1-4-5、命令行参数转环境变量:set temp=%1&&&&&& 1-4-6、for替代变量转环境变量:for ... set temp=%%i
  二、如果字符串的引号分布情况很复杂,或者我们对被脱去引号的位置有特殊要求, 或者字符串中可能出现某些控制字符,则可以将字符串首先通过1-4 中的对应方法转存 至环境变量中,在使用以下方案或其组合进行处理:
  2-1 、可以使用set var=%var:~1%脱去环境变量var 串首的第一个引号,如果串首 不存在引号则第一个字符被脱去;
  2-2 、可以使用set %var:*"=% 脱去环境变量var 串首的第一个引号,如果串首不 存在引号则变量值不变;
  2-3 、可以使用set var=%var:~0,-1% 脱去环境变量var 串尾的最后一个引号,如 果串尾不存在引号则最后一个被脱去;
  2-4 、可以使用set "var=%var%脱去环境变量var 串尾的最后一个引号,如果串尾 不存在引号则环境变量被清空;
  2-5 、可以使用set var=%var:~1,-1% 脱去环境变量var 串最外侧的一对引号,如 果串外侧不存在引号则外侧一对字符被脱去;
  2-6 、可以使用%var:*"=set "var=%脱去环境变量var 串最外侧的一对引号,如果 串外侧不存在引号则出现语法错误;
  2-7 、可以使用set "var=%var:"=%"脱去环境变量var 串中可能出现的所有引号, 如果串外侧不出现引号则变量值不变;与1-3 不同的是,它容许字符串的匹配引号对内 出现特殊控制字符;
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具cmd.exe 一些常见的启动参数介绍
转载 &更新时间:日 17:27:48 & 作者:TYuenCN
这篇文章主要介绍了cmd.exe 一些常见的启动参数介绍,很多情况我们在学习bat的时候都需要使用bat的一些参数
脚本之家小编就喜欢用bat如果在bat直接运行命令会自动关闭窗口导致看不到效果,那么我们可以在命令前加上
cmd /k echo 脚本之家
不用每次都加上pause了。因为很多bat学习的时候很多情况下会出错,这样我们就可以看到错误信息了。
启动命令解释程序 Cmd.exe 的新范例。如果在不含参数的情况下使用,cmd 将显示操作系统的版本和版权信息。
cmd [{/c | /k}] [/s] [/q] [/d] [{/a | /u}] [/t:FG] [/e:{on | off}] [/f:{on | off}] [/v:{on | off}] [String]
执行 String 指定的命令,执行完后停止,会退出。例如:
cmd /c "echo %cd% & echo ddddd & set xxx=12345"
后面的pause和cls也会执行,执行到最后则会退出当前的运行环境(双击运行方式),但当前环境变量xxx不会保留(开始-&运行-&cmd,然后执行当前bat文件的方式执行完后,再次输入set查看当前环境变量)
执行 String 指定的命令并继续,运行完会保持当前运行窗口及环境变量。例如:
cmd /k "echo %cd% & echo ddddd & set xxx=12345"
程序执行完cmd后面字符串的命令后就会暂停执行,所以后面的pause和cls不会执行。但窗口和环境变量会保持。运行方式:双击或从命令行执行当前bat文件都行
修改 /c 或 /k 后对 String 的处理。
关闭回显。
禁用 AutoRun 命令执行。
将内部命令输出按美国国家标准学会 (ANSI) 格式化为管道或文件。
将内部命令输出作为 Unicode 格式化为管道或文件。
设置前景 F 色和背景 G 色。下表列出了可用作 F 和 G 值的有效十六进制数字。
启用命令扩展。
禁用命令扩展。
启用文件和目录名称完成。
禁用文件和目录名称完成。
启用延迟的环境变量扩展。
禁用延迟的环境变量扩展。
指定要执行的命令。
在命令提示符下显示帮助。
使用多个命令
可以在 String 中使用由命令分隔符 && 分隔的多个命令,但这些命令必须用引号括起来(例如,"Command&&命令&&命令")。
如果指定了 /c 或 /k,cmd 会处理 String 中的其余命令,并且只有在满足下述所有条件的情况下,才保留引号:
未使用 /s。
准确使用了一对引号。
在引号内未使用任何特殊字符(例如:&&&( ) @ ^ |)。
在引号内使用了一个或多个空白字符。
引号内的 String 为可执行文件的名称。
如果上述条件不能满足,则处理 String 时将首先检查它的第一个字符以验证其是否为左引号。如果第一个字符是左引号,则它会与右引号分离开。跟在右引号之后的任何文本都会得到保留。
执行注册表子项
如果在 String 中未指定 /d,则 Cmd.exe 会查找以下注册表子项:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun\REG_SZ
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun\REG_EXPAND_SZ
如果上述的一个注册表子项或两个都存在,则会在执行所有其他变量之前执行它们。
编辑注册表不当可能会严重损坏您的系统。在更改注册表之前,应备份计算机上任何有价值的数据。
启用和禁用命令扩展
在 Windows XP 中,命令扩展在默认情况下是启用的。对于特定进程,可使用 /e:off 禁用它们。通过设置下述 REG_DWORD 值,可以在计算机上或用户会话中启用或禁用所有 cmd 命令行选项的扩展:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions\REG_DWORD
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions\REG_DWORD
在注册表中使用 Regedit.exe 可以将 REG_DWORD 值设为 0×1(即启用)或 0×0(即禁用)。用户特定设置优先于计算机设置,并且命令行选项优先于注册表设置。
编辑注册表不当可能会严重损坏您的系统。在更改注册表之前,应备份计算机上任何有价值的数据。
启用命令扩展后,会影响到下述命令:
chdir (cd)
del (erase)
mkdir (md)
start(还包括将更改外部命令过程)
有关这些命令的详细信息,请参阅“相关主题”。
启用延迟的环境变量扩展
如果启用延迟的环境变量扩展,则可以使用感叹号字符来替代运行时的环境变量值。
启用文件和目录名称完成
默认情况下,禁用文件和目录名称完成。对于特定的 cmd 命令处理,可以通过 /f:{on|off 来启用或禁用文件名称完成。通过设置下述 REG_DWORD 值,可以在计算机上或用户登录会话中启用或禁用所有 cmd 命令处理的文件和目录名称完成:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD
要设置 REG_DWORD 值,请运行 Regedit.exe 并使用特定功能的控制字符的十六进制值(例如,用 0×9 表示 Tab 键,用 0×08 表示 BackSpace 键)。用户特定设置优先于计算机设置,并且命令行选项优先于注册表设置。
编辑注册表不当可能会严重损坏您的系统。在更改注册表之前,应备份计算机上任何有价值的数据。
如果使用 /f:on 启用了文件和目录名称完成,则对于目录名称完成,可使用 Ctrl+D;而对于文件名称完成,可使用 Ctrl+F。要禁用注册表中特定的完成字符,请使用空格 [0×20] 的数值,因为空格不是有效的控制字符。
按 Ctrl+D 或 Ctrl+F 时,cmd 会处理文件和目录名称完成操作。这些组合键的作用是在 String 后附加通配符(如果还未使用),并创建匹配的路径列表,然后显示第一个匹配的路径。如果所有路径都不匹配,文件和目录名称完成操作会发出警告声,并且不更改所显示的内容。要逐个查看匹配路径列表中的路径,请重复按 Ctrl+D 或 Ctrl+F。要向后查看该列表,请在按 Shift 键的同时按 Ctrl+D 或 Ctrl+F。要放弃已保存的匹配路径列表并生成新列表,可以编辑 String,然后按 Ctrl+D 或 Ctrl+F。如果在 Ctrl+D 和 Ctrl+F 之间切换,将会放弃已保存的匹配路径列表并生成新列表。Ctrl+D 组合键与 Ctrl+F 组合键之间唯一的不同在于,Ctrl+D 仅匹配目录名,而 Ctrl+F 既匹配文件名,又匹配目录名。如果在任何内部目录命令(即 CD、MD 或 RD)中使用文件和目录名称完成,将仅使用目录完成。
如果将匹配路径置于引号之中,则文件和目录名称完成会正确地处理含有空格或特殊字符的文件名。
下述特殊字符需要有引号:& & & [ ] { } ^ = ; ! ' + , ` ~ [空格]
如果提供的信息包含空格,请使用引号将文本引起来(例如,"计算机名")。
如果从 String 内处理文件和目录名称完成操作,则将放弃 [Path] 在光标右侧的任何部分(即在 String 中处理完成操作的位置)。
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具-----siwuxie095
二、自定义变量
一般用 set 读入的方法定义和赋值
1、程序里设置变量
set var=Hello World!
sublime中:
2、读入的方法设置变量
set /p var=请输入一个变量:
pause &nul
sublime中:
提到变量就不能不提批处理中的两个符号:% 和 !
批处理中,对变量不用像C语言一样预先定义就可以使用,非常自由
看似自由的机制,却又让人又痛苦:在没有预先说明哪些符号是变量
的情况下,计算机的识别问题。
解决方案:在编程时,对要使用的变量用
% 标明,在延迟变量的情况下
如:常规情况下
set num=12
如:延迟变量情况下
setlocal enabledelayedexpansion
set num=12
for /l %%i in (1,1,5) do (
set /a num+=10
echo !num!
这两个例子就是关于常规情况下变量符号
% 和 延迟变量情况下变量符号 !
的使用,其功能在于告诉计算机该串代码是变量
%0 - %9 和 %* 这十一个符号中的 % 不是代表变量,而是参数的意思,
参数和普通变量不同,不能改变参数的值
for 里的 %%i,两个 % 标出的不是普通变量,而是循环变量,
循环变量和普通变量不同,不能改变循环变量的值
for 里的循环变量 %%i 和 参数 %0 - %9,其整体代表变量,引用时
不能再对其增加变量符号 %
在计算中,% 表示取余,如:
set num=100
set /a result=num%%7
在输出格式中,% 表示输出格式的意思 %str:~m,n%,详见 set 命令
总结:% 应用范围:变量、参数、循环变量、余数计算、格式
%0,%1,%2,%3,%4,%5,%6,%7,%8,%9,%*
对于 %1 - %9
批处理的第一个参数
批处理的第二个参数
批处理的第三个参数
批处理的第四个参数
批处理的第五个参数
批处理的第六个参数
批处理的第七个参数
批处理的第八个参数
批处理的第九个参数
批处理有且仅有这九个参数,不存在
%10 及以上参数
call 命令允许使用参数,先看参数在 call 中的应用:
call :loop Hello World!
pause&nul & goto :eof
sublime中:
运行一览:
计算机认为 Hello World! 是两个参数,如果想让其是一个参数,
应该用双引号(英文格式)引起来
再如:用 call 带参数递归算阶乘
title 阶乘--递归算法
echo. & echo. & echo
阶乘--递归算法
setlocal enabledelayedexpansion
echo. & echo.
set /p n=请输入一个数
set result=1
if !n!==0 (echo
1 & pause&nul & goto eof) else (call :loop !n!)
echo. & echo
结果等于!result!
set /a result=!result!*%1
set /a x=%1
set /a x-=1
call :loop !x!
sublime中:
运行一览:
参数也不止用在 call上,其他例子:
同一个目录下,有两个bat文件:
start abc.bat 1,2,3,4
call abc.bat a b c d
运行 abc.bat 一览:
运行 123.bat 一览:弹出两个窗口
可见:赋予参数时,参数和参数之间用逗号
空格隔开都可以
如:F盘根目录下有一个 test.bat
在cmd窗口中执行:
在执行 test.bat 时,%1 就表示 z:,这样 format %1 就相当于
format z:,即格式化 Z盘
但此程序明显用
set 读入更简单:
set /p a=请输入一个驱动器号:
运行一览:
双击执行 test.bat,输入 z:,若存在 Z盘,就会格式化 Z盘
set 比 %1 - %9 简单)
再如:F盘根目录下有 test.bat,a.txt,b.txt:
在cmd窗口中执行:将顺序显示 a.txt,b.txt 中的内容
很明显:同样可以不用 %1 - %9 就能实现显示文本文件
再看:删除文件和文件夹
del /f /q %1
rd /q /s %1
在cmd中执行时,像上面一样直接赋予要删除的文件(夹)的名字当
参数即可,实际上可以更简单,直接拖放某文件(夹)到这个
件上面,即可彻底删除
之所以用了两个命令
del 和 rd ,是为了保证可以删除文件以及文件夹,
加上参数,是为了删除前不必经过确认就删除
%* 的作用不是很大,只是返回参数,不过它是一次返回全部参数的值,
%0 - %9 来一个个确定
在cmd窗口中执行:空格也一起输出了
参数最多只能有九个,测试程序如下:
sublime中:
在cmd窗口中执行:
咋一看,参数在10及以上似乎可以,其实不然,变换测试:
显然,%10 及以上是无效参数,但如果不指定返回参数,用 %*
输出全部参数,参数个数就没有限制了
%0 不是返回参数,其有两层意思:
第一层:如果
%0 前有 echo 等命令,则代表返回该批处理所在的绝对路径
第二层:如果
%0 前没有任何参数,则代表自身批处理,会无限循环执行
bat(也就是调用自身 bat 程序)
运行一览:
此显示结果带双引号,如果不想要双引号,这么写:
%%i in (%0)
运行一览:
再如:无限循环执行
net user,即不断显示用户账户信息,
直到你手动停止为止(Ctrl+C)
运行一览:
再如:将自身复制到
D盘,并命名为 testx.bat
echo Hello World!
%0 d:\testx.txt
运行一览:
%0 高级用法:
1、最简单的死循环程序,同时也是最简单的批处理程序:
运行一览:不断重复显示自身路径,直到手动停止(Ctrl+C)
2、用 %0 实现嵌套和递归
call 调用函数的时候可以使用参数,%0 同样可以
set /a var=%1+1
%var% lss 100 (%0 %var%)
else pause
sublime中:
运行一览:从 1 显示到 100
如果用 call,就变成:
set /a var=%1+1
%var% lss 100
call :loop %var%
sublime中:
【made by siwuxie095】

我要回帖

更多关于 mybatis参数有单引号 的文章

 

随机推荐