首页 > 解决方案 > 文件上的 For 循环使无限循环

问题描述

我被困在我的批处理文件中的 for 循环问题上。下面的代码用于将 SQL 文件中的每个示例“INSERT”语句更改为 INSERT IGNORE。

for %%f in (%folder%\*.sql) do (
   %~dp0\jager.exe -C "%%f" DROP \x23
   %~dp0\jager.exe -C "%%f" INSERT "INSERT IGNORE"
   %~dp0\jager.exe -C "%%f" "CREATE TABLE" "CREATE TABLE IF NOT EXISTS"
)

所以在这个循环中,jager.exe 是一个“查找和替换”程序,但是文件被修改了,循环再次使用它。所以我做了一个无限循环,但这不是我想要的。

我尝试了很多东西,但现在我不知道如何避免那个无限循环。

我可以从循环中获取迭代器吗?或者有什么办法让它不是无限循环?

谢谢你的时间。

标签: sqlbatch-filecmd

解决方案


改成:

for /f "delims=" %%f in ('dir /b "%folder%\*.sql"') do (

dir命令在for开始处理它的输出之前完全执行,因此在此过程中创建的文件将不会被处理。


推荐阅读