查找目录中的所有 .sql-Files 并使用 sqlcmd 执行它们

Find all .sql-Files in a Directory and execute them with sqlcmd

我仍然是 CMD 初学者,我想将目录结构中包含 sqlcmd 的所有 SQL 文件导入我的数据库。

如果我将所有 *.sql 复制到根文件夹中,则以下命令有效:

@ECHO ON
FOR %%G in (*.sql) DO sqlcmd /S *SERVER* /d *DB* /U *USER* /P *PW* -i"%%G" > LOG_lastrun.txt 2> LOG_errors.txt

pause
@ECHO ON
FOR /F "tokens=1 delims=sql" %%G in (*.sql) DO sqlcmd /S *SERVER* /d *DB* /U *USER* /P *PW* -i"%%G" > LOG_lastrun.txt 2> LOG_errors.txt

pause

不幸的是,它对我的​​ FOR /F 循环不起作用。你能帮我吗?

FOR /F 的工作方式不同。它运行一个命令。 Jusr *.sql 不是命令。另外,我怀疑您想使用 >>.

连接 stdout 和 stderr 输出
@ECHO ON
SET "SERVER_NAME=*SERVER*"
SET "DB_NAME=*DB*"
SET "LOGIN_ID=*USER*"
SET "PASS=*PW*"

FOR /F "delims=" %%G IN ('DIR /B "*.sql"') DO (
    sqlcmd  -S %SERVER_NAME% -d %DB_NAME% -U %LOGIN_ID% -P %PASS% -i "%%~G" >> LOG_lastrun.txt 2>> LOG_errors.txt
)

pause