bat显示变量字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bat显示变量字符相关的知识,希望对你有一定的参考价值。
@echo off
echo 更改%a%文件夹
pause
我不是要显示A的值,而是要直接显示%a%
@echo off
set "变量1=abcdefghijklmnopq"
set 返回代码=
echo %变量1%|findstr /c:"abc">nul 2>nul&&set 返回代码=true||set 返回代码=false 参考技术B 使用转义符,代码改为:
@echo off
echo 更改^%a^%文件夹
pause追问
这个也显示不出来,,,,
追答在我的电脑上可以呀……我解释不清了……
附图是我在电脑用变量%time%试验的结果
转义字符不能用
追答出现什么错误提示了?是不是你的输入法处于全角状态?
参考技术C 两边加双引号试试。。追问不行的哦,,
追答@echo off
set \p a=input a char:
echo you input is : "%a%".
echo a=%%a%%.
pause
因为在linux系统下无法测试,你自己试一下。。
望及时采纳,祝你愉快。。。。
不是哦,,,显示不出来
追答经过测试
@echo off
set /p a= input:
echo a = %a%.
pause
这是正确的,如果不行。可能是你的系统的问题。。。
望及时采纳,祝你愉快。。。。
echo 更改%%a%%文件夹
pause
楼上的,你是在CMD中测试的吧本回答被提问者采纳
在 .bat 脚本中保存字符串变量时出现问题
【中文标题】在 .bat 脚本中保存字符串变量时出现问题【英文标题】:Problem saving string variables in .bat script 【发布时间】:2022-01-07 15:48:30 【问题描述】:正如标题所说,我在 bat 脚本中保存(并因此打印)字符串变量时遇到问题。当我尝试使用以“!”开头和/或结尾的字符串时,就会出现问题。示例:
@echo off
pause
setlocal ENABLEDELAYEDEXPANSION
for /r %%f in (*.png *.jpg *.gif *.webp *.jpeg) do (
set curr_name=%%~nxf
set curr_path=%%~dpf
@echo !curr_path!!curr_name!
@echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
)
pause
对于名为 !a.png 和 a!.png 的文件,它会打印出 a.png 和 !a! .png 它只是打印出 .png。我一直试图为此找到答案,但没有运气。抱歉,如果我在这里遗漏了一些明显的东西,并感谢您的任何提示!
【问题讨论】:
【参考方案1】:启用延迟扩展后,这是预期行为。您显示的用例不需要分配变量 - 您可以使用相关的 For 变量修饰符。
如果由于某种原因需要使用延迟扩展(例如执行子字符串修改),则应在分配变量后的循环期间打开/关闭延迟扩展:
例子:
@echo off
for /r %%f in (*.png *.jpg *.gif *.webp *.jpeg) do (
set "curr_name=%%~nxf"
set "curr_path=%%~dpf"
Setlocal enabledelayedexpansion
echo(!curr_path!!curr_name!
endlocal
@echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
)
pause
【讨论】:
我发布的示例是完整脚本的内脏部分,我确实需要在这个 for 循环的外部和内部进行延迟扩展。您是否建议使用 setlocal enabledelayedexpansion/endlocal 包装每个需要它的部分? 这将取决于我们看不到的“内脏”代码的其余部分。为整个脚本启用它通常会很好,只要您不需要使用包含感叹号的字符串,否则,启用它并仅在需要时使用它。以上是关于bat显示变量字符的主要内容,如果未能解决你的问题,请参考以下文章