我如何在批处理文件或 PowerShell 脚本中 运行 一个命令 'x' 次?
How can I run a command 'x' number of times, in batch file or PowerShell script?
我有一个维护脚本,它正在生成 .sql
文件,其中包含一些 SQL 脚本。
当文件大小达到限制时,我关闭文件并创建一个新文件,将数据转储到第二个文件中。
不知道会生成多少个文件(以当前数据量为准)。到目前为止,它看起来大约有 100 个文件。
那么,有什么好的方法可以说吗
- 从目标目录中获取所有以
.sql
结尾的文件。
- 现在运行每个命令都有这个命令。
我的 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
必须不能修改枚举目录树。
我有一个维护脚本,它正在生成 .sql
文件,其中包含一些 SQL 脚本。
当文件大小达到限制时,我关闭文件并创建一个新文件,将数据转储到第二个文件中。
不知道会生成多少个文件(以当前数据量为准)。到目前为止,它看起来大约有 100 个文件。
那么,有什么好的方法可以说吗
- 从目标目录中获取所有以
.sql
结尾的文件。 - 现在运行每个命令都有这个命令。
我的 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
必须不能修改枚举目录树。