bat显示变量字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bat显示变量字符相关的知识,希望对你有一定的参考价值。

@echo off
echo 更改%a%文件夹
pause

我不是要显示A的值,而是要直接显示%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
这是正确的,如果不行。可能是你的系统的问题。。。

望及时采纳,祝你愉快。。。。

参考技术D @echo off
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.pnga!.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显示变量字符的主要内容,如果未能解决你的问题,请参考以下文章

Bat批处理怎么从txt中随机提取一个字符并设为变量?

BAT批处理,如何判断变量中,是不是包含了指定的字符串?

BAT批处理中输出变量换行

在 .bat 脚本中保存字符串变量时出现问题

BAT/CMD中将命令执行结果赋值给变量

bat提取字符?