我有一些代码,我想用FOR循环来处理一组文件。 作为处理文件的一部分,有一个FOR /F循环来读取它,并根据文件名将数据追加到另一个文件中。
这是代码应该看起来像我原本打算的那样:
setlocal enabledelayedexpansion for %%f in (DataFolder*.Ext) do ( set POI=%%~f set POI=!JbPOI:DataFolder=! set POI=!JbPOI:.Ext=! for /f "tokens=1,2,3 delims=," %%a in ("%%~f") do ( set CX=%%a set CY=%%b set FN=%%c echo !FN!,9,!CX!,!CY! >> "DataFolder!POI!.tmp" ) ) endlocal
此代码不起作用,因为variables%%a , %%b和%%c永远不会收到一个值, %%a始终与%%f具有相同的值。
我已经阅读了一些有关这个问题的文章,但不能从他们的工作中提取解决scheme。
我已经尝试了几件事,迄今为止没有工作…
添加一个虚拟的外部循环来显式地创buildvariables%%a到%%j
内部FOR循环取出,并使其成为一个子程序
内部FOR循环取出,并使其成为一个单独的batch file
任何人都可以告诉我,这可以 – 或必须 – 解决?
setlocal enabledelayedexpansion for %%f in (DataFolder*.Ext) do ( set POI=%%~f set POI=!JbPOI:DataFolder=! set POI=!JbPOI:.Ext=! for /f "useback tokens=1,!CY! >> "DataFolder!POI!.tmp" ) ) endlocal
我不知道你是否想读取文件"%%~f" ,但我认为这是你需要的。
对不起,但对于发布的代码,我没有看到需要延迟扩展。 所有需要的数据都直接从可替换参数中检索
setlocal enableextensions disabledelayedexpansion for %%f in (DataFolder*.Ext) do ( ( for /f "usebackq tokens=1-3 delims=," %%a in ("%%~f") do echo(%%c,%%a,%%b ) > "DataFolder%%~nf.tmp" ) endlocal
如果真实的代码包含未发布的内容,也许npocmaka的答案将更好地适应问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。