我正在编写一个修改输入文件的批处理文件,但前提是文件名包含-source
。
这有效:
@echo off
@setlocal ENABLEDELAYEDEXPANSION
set fn=%1
echo Checking %fn%...
set outfile=%fn:-source=%
if not x%fn:-source=%==x%fn% (
echo Output to %outfile%
)
但这不是:
@echo off
@setlocal ENABLEDELAYEDEXPANSION
set fn=%1
echo Checking %fn%...
if not x%fn:-source=%==x%fn% (
set outfile=%fn:-source=%
echo Output to %outfile%
)
在第二种情况下,它只输出"输出到"没有文件名。我该如何解决这个问题?
答案 0 :(得分:1)
这是你的第二个剧本,我的评论回答以及关于双引号的一些额外改进。
"x%fn:-source=%"
作为补充说明,如果"x%fn%"
等于If
,则无需使用@Echo Off
If "%~1"=="" Exit/B
Set "fn=%~1"
Echo Checking %fn%...
Set "outfile=%fn:-source=%"
Echo Output to %outfile%
,(进行不会改变价值的替换是无害的)
{{1}}