2014-03-04 42 views
2

我有一个编译器输出,它是一个十六进制文件,我将比较特定文本的第一行,如果它不存在,则将其添加。但十六进制文件输出格式为something.another.again.hex。如何从文件夹中选择这个十六进制文件。我从同一个文件夹运行批处理文件。批处理脚本:选择具有多个点的文件名

这是我的代码,有人能纠正吗?

@echo on 
for %%i In (*.*.*.hex) Do (
     echo %%i 
     set /p var= <%%i 
     if NOT %var% == sometext (
     echo sometext >temp.hex 
     type %%i >> temp.hex 
     del %%i 
     ren temp.hex %%i 
    ) 
) 

该文件没有选择不打印输出..

回答

2

需要延迟扩展使用块中的变量(()之间:

@echo on 
setlocal enabledelayedexpansion 
for %%i In (*.*.*.hex) Do (
     echo %%i 
     set /p var= <%%i 
     if NOT !var! == sometext (
     echo sometext >temp.hex 
     type %%i >> temp.hex 
     del %%i 
     ren temp.hex %%i 
    ) 
) 
+0

比较没有在使用这种方法时,它会添加sometext, – Bash

+0

在这里可以正常工作,检查'var',如果它有一个额外的空间,它将会失败(使用'echo var: - !var!-'在'set/p'之后) – Stephan

+0

完美工作!var后的空间! – Bash