吃完饭回来继续测试,发现以下代码效果极佳~~
@echo off
pushd "%~dp0"
for %%a in (*.txt) do (
set fn="%%~na"
call echo %%fn%%
set pos=2
call call echo %%%%fn:~0,%%pos%%%%%%"
)
pause
其实延迟变量的问题不一定非要用setlocal enabledelayedexpansion来解决,
用call也行,可能是出于简洁的考虑,我不大喜欢用setlocal enabledelayedexpansion,
所以我写的代码一般都不会有setlocal enabledelayedexpansion,当然也就不会出现用!感叹号来进行引用的变量
这一点希望你理解,我觉得不管用什么办法,只要能达到目的就行。
修改并优化了一下你的代码,如下:
for %%a in (*.txt) do (
set pos=0
set FN="%%~na"
call echo %%FN%%
::这里假设strstr是一个外部程序
call strstr %%FN%% _By /I
if errorlevel 1 (
set pos=1
) else (
set pos=0
)
call call echo "%%%%fn:~1,%%pos%%%%%%"
)
pause
测试下代码看行不行
因为里面有你自己写的程序,所以
我这里无法保证你写的代码最终都是正确的,需要你自己去测试运行
另外这里给你编写代码提个建议
用set给字符串变量赋值的时候,最好带上引号,这样兼容性会好点
如:set FN="%%~na"
[
Last edited by nickwu on 2010-6-1 at 14:37 ]