我如何在批处理文件或 PowerShell 脚本中 运行 一个命令 'x' 次?

How can I run a command 'x' number of times, in batch file or PowerShell script?

我有一个维护脚本,它正在生成 .sql 文件,其中包含一些 SQL 脚本。

当文件大小达到限制时,我关闭文件并创建一个新文件,将数据转储到第二个文件中。

不知道会生成多少个文件(以当前数据量为准)。到目前为止,它看起来大约有 100 个文件。

那么,有什么好的方法可以说吗

我的 SQL 服务器上的命令 window 中的命令 I 运行 是这样的:

sqlcmd -S 127.0.0.1 -d SomeDBTenant -U someUser -P somePassword -I -i c:\temp\SqlScript_1.sql

是的,您可以使用 Get-ChildItem cmdlet 获取所有 .sql 文件(添加 -recurse 如果您想递归执行)和 运行 sqlcmd 每个其中:

$sqlFiles = Get-ChildItem -Path 'C:\test' -Filter '*.sql' # you can do it recurse with -r
$sqlFiles | foreach { sqlcmd -S 127.0.0.1 -d SomeDBTenant -U someUser -P somePassword -I -i $_.FullName }

在 Windows 命令提示符下,您可以使用 for 浏览目录或目录树中匹配 (a) 特定模式的所有文件,例如:

rem remove the `/R` switch if you don't want to loop recursively
for /R %%F in (*.sql) do (
  REM replace `%%~F` by `%%~fF` to pass the file's full path to the command
  sqlcmd -S 127.0.0.1 -d SomeDBTenant -U someUser -P somePassword -I -i "%%~F"
)

注: 这仅在 sqlcmd 在枚举目录中 而不是 create/rename/delete 任何 *.sql 文件时有效。另外,如果使用/R选项,sqlcmd必须不能修改枚举目录树。