一次为每个文件执行许多批处理命令

时间:2011-10-26 16:15:53

标签: loops batch-file

如何逐个为多个文件执行多个批处理命令。这意味着,如果我想先将文件从一个文件夹移动到工作文件夹,将文件重命名为csv格式,调用sqlloader脚本,调用第二个sql脚本,最后再调用另一个sql脚本 - 上面的所有步骤都不应该是对于所有文件,但一次只能存储一个文件。我尝试过如下所示的内容,但是当时出现“\ Downloads \ Validation \ Prestage * .psa”这样的错误是意外的。“我不能在循环标准中传递通配符* .psa吗?

非常感谢并感谢您的时间。

    echo off

    :MAIN


    copy C:\Downloads\Prevalidation\*.psa C:\Downloads\Validation\Prestage\

    FOR %A IN (C:\Downloads\Validation\Prestage\*.psa) DO ( move C:\Downloads\Validation\Prestage\*.psa C:\Downloads\Validation\WIP\
      ren C:\Downloads\Validation\WIP\*.psa *.csv
    <call sqlloader now>
    <call update script now> 
    <call validation script now> 
   )

   exit

谢谢, 桑德斯。

1 个答案:

答案 0 :(得分:0)

您的策略是正确的。

有一个小的语法错误:您需要在BAT文件内的%%A命令中使用%A而不是FOR。然后,您需要在循环中引用%%A作为正在处理的文件的名称。

@echo off
copy C:\Downloads\Prevalidation\*.psa C:\Downloads\Validation\Prestage\
FOR %%A IN (C:\Downloads\Validation\Prestage\*.psa) DO ( 
  move %%A C:\Downloads\Validation\WIP\%%~nA.psa
  ren C:\Downloads\Validation\WIP\%%~nA.psa *.csv
  <call sqlloader now>
  <call update script now> 
  <call validation script now> 
)