Batch file 如何将多个参数传递给批处理文件?

Batch file 如何将多个参数传递给批处理文件?,batch-file,Batch File,我有一个批处理文件。我有5个数据文件,分别位于5个不同的文件夹中。数据结构相同:列数相同,文件名相同,但内容不同。如何将多个参数传递给批处理文件?下面是加载1个文件夹的数据的示例。如何处理位于4个其他文件夹(Folder2…Folder5)中的数据?我需要你的帮助 @echo off for %%F in ("C:\Temp\Folder1\*.txt") do ( sqlldr USERID=xyz/xyz@db CONTROL='C:\Temp\Folder1\TEST.ctl' LOG=

我有一个批处理文件。我有5个数据文件,分别位于5个不同的文件夹中。数据结构相同:列数相同,文件名相同,但内容不同。如何将多个参数传递给批处理文件?下面是加载1个文件夹的数据的示例。如何处理位于4个其他文件夹(Folder2…Folder5)中的数据?我需要你的帮助

@echo off
for %%F in ("C:\Temp\Folder1\*.txt") do (
sqlldr USERID=xyz/xyz@db CONTROL='C:\Temp\Folder1\TEST.ctl' 
LOG='C:\Temp\Folder1\TEST.log' "DATA=%%F"
goto AfterLoop
)
:AfterLoop

我假设文件夹都在同一级别上。您可以使用
FOR/D
命令获取文件夹列表

FOR /D %%G IN (C:\temp\*) DO ...
然后,您可以将其用作内部
FOR
命令的一部分:

FOR %%F IN ("%%G\*.txt") do ....
所以,如果你把它们放在一起,看起来会像这样

@echo off
FOR /D %%G IN (C:\temp\*) DO (
    for %%F in ("%%G\*.txt") do (
        sqlldr USERID=xyz/xyz@db CONTROL='%%G\TEST.ctl' LOG='%%G\TEST.log' "DATA=%%F"
    )
)

我不知道如何使用该工具,也从未阅读过帮助/使用信息,因此这只是一个假设:

@Echo关闭
对于(1 2 3 4 5)中的%%A,请执行以下操作(
PushD“C:\Temp\文件夹%%A”
SQLLdr USERID=xyz/xyz@db控件=测试日志=测试数据=*.txt
流行音乐
)
:后回路
如果
DATA
不接受通配符,则可能添加嵌套循环即可:

@Echo关闭
对于(1 2 3 4 5)中的%%A,请执行以下操作(
PushD“C:\Temp\文件夹%%A”
对于(*.txt)中的%%B,请执行以下操作(
SQLLdr USERID=xyz/xyz@db控制=测试日志=测试数据='%%B'
)
流行音乐
)
:后回路
当然,因为现在几乎可以保证您会告诉我们文件夹名称不准确,所以您可以对其进行类似调整:

@Echo关闭
对于%%A In(
“C:\Temp\Folder1”
“C:\Temp\Folder2”
“C:\Temp\Folder3”
“C:\Temp\Folder4”
“C:\Temp\Folder5”
)做(
PushD“%%A”
SQLLdr USERID=xyz/xyz@db控件=测试日志=测试数据=*.txt
流行音乐
)
:后回路
或:

@Echo关闭
对于%%A In(
“C:\Temp\Folder1”
“C:\Temp\Folder2”
“C:\Temp\Folder3”
“C:\Temp\Folder4”
“C:\Temp\Folder5”
)做(
PushD“%%A”
对于(*.txt)中的%%B,请执行以下操作(
SQLLdr USERID=xyz/xyz@db控制=测试日志=测试数据='%%B'
)
流行音乐
)
:后回路

感谢您的快速回复。它非常有用。是的,所有文件夹都处于同一级别。文件夹1。到folder5只是一个例子,但文件夹的真实名称是SV.DE、DS、DA和DF。我以5个文件为例,但实际上,我每天得到44个数据源,所以我创建了44个文件夹。第一个例子很接近我想要的。我还没有试过,但我会告诉你结果的。再次感谢