批处理文件 - 无法读取变量
Batch file - can not read a variable
制作生成预览的批处理(这部分代码一切正常)并重命名文件,删除文件名中“_”之后的所有内容。例如 ABAB_abab.png > ABAB.png
我的代码在字符串中没有看到变量 yy:set zz=!xx:yy=!将其视为两个字母 yy,而不是变量。如何解决?
这是脚本
setlocal enabledelayedexpansion
for %%a in ("*.png") do (
set xx=%%~na
set yy=_!xx:*_=!
set zz=!xx:yy=!
echo xx= !xx! @rem (okay, returns ABAB_abab)
echo yy= !yy! @rem (okay, returns _abab)
echo zz= !zz! @rem (wrong, returns ABAB_abab without any substitutions)
pause
)
endlocal
感谢您的帮助
这里有一个简单的例子,向您展示了实现另一层扩展的方法:
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
For %%G In ("*.png") Do (
Set "xx=%%~nG"
SetLocal EnableDelayedExpansion
Set "yy=_!xx:*_=!"
For %%H In ("!yy!") Do Set "zz=!xx:%%~H=!"
Echo xx = "!xx!"
Echo yy = "!yy!"
Echo zz = "!zz!"
EndLocal
Pause
)
双引号包含在 Echo
命令中只是为了在您的字符串中有任何空格时更好地可视化,不需要它们用于任何其他目的。
请注意,对于基本名称以一个或多个下划线 _
.[= 开头的任何 .png
文件,这将无法实现您的意图14=]
制作生成预览的批处理(这部分代码一切正常)并重命名文件,删除文件名中“_”之后的所有内容。例如 ABAB_abab.png > ABAB.png 我的代码在字符串中没有看到变量 yy:set zz=!xx:yy=!将其视为两个字母 yy,而不是变量。如何解决?
这是脚本
setlocal enabledelayedexpansion
for %%a in ("*.png") do (
set xx=%%~na
set yy=_!xx:*_=!
set zz=!xx:yy=!
echo xx= !xx! @rem (okay, returns ABAB_abab)
echo yy= !yy! @rem (okay, returns _abab)
echo zz= !zz! @rem (wrong, returns ABAB_abab without any substitutions)
pause
)
endlocal
感谢您的帮助
这里有一个简单的例子,向您展示了实现另一层扩展的方法:
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
For %%G In ("*.png") Do (
Set "xx=%%~nG"
SetLocal EnableDelayedExpansion
Set "yy=_!xx:*_=!"
For %%H In ("!yy!") Do Set "zz=!xx:%%~H=!"
Echo xx = "!xx!"
Echo yy = "!yy!"
Echo zz = "!zz!"
EndLocal
Pause
)
双引号包含在 Echo
命令中只是为了在您的字符串中有任何空格时更好地可视化,不需要它们用于任何其他目的。
请注意,对于基本名称以一个或多个下划线 _
.[= 开头的任何 .png
文件,这将无法实现您的意图14=]