【问题标题】:execute a number of batch commands for each files at one time一次对每个文件执行多个批处理命令
【发布时间】:2011-12-15 21:03:49
【问题描述】:

如何对多个文件一个一个地执行多个批处理命令。意思是说,如果我想首先将文件从一个文件夹移动到工作文件夹,将文件重命名为 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

谢谢, 桑德斯。

【问题讨论】:

    标签: loops batch-file


    【解决方案1】:

    你的策略是正确的。

    有一个小的语法错误:您需要在 BAT 文件中的 FOR 命令中使用 %%A 而不是 %A。然后你需要在循环中引用%%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> 
    )
    

    【讨论】:

    • PA - 感谢您的回复。但是,我在执行脚本时仍然遇到语法错误。这是我的脚本 - echo off :MAIN copy C:\Downloads\Prevalidation*.psa C:\Downloads\Validation\Prestage\ FOR %%A IN (C:\Downloads\Validation\Prestage*.psa) DO ( move %% AC:\Downloads\Validation\WIP\%%~nA.psa ren C:\Downloads\Validation\WIP\%%~nA.psa psaload.csv call C:\CAP_SPS\Batchscripts\runloader.bat call C:\CAP_SPS \Batchscripts\runupdate.bat call C:\CAP_SPS\Batchscripts\runvalidation.bat del C:\Downloads\Validation\WIP\psaload.csv ) 退出
    • @user982201:我建议在moveren 命令中使用引号,例如move "%%A" "C:\Downloads\Validation\WIP\%%~nA.psa"
    • @user98822 哪个命令失败了?... 在所有命令前加上 echo 并在文件名周围加上引号。
    • PA - 重命名文件时失败。错误消息是“命令的语法不正确”。我想我知道原因。上面的循环没有按预期工作。它将所有 *.psa 文件从 Prestage 文件夹移动到 WIP 文件夹,然后程序不知道要重命名为哪个文件,因为我传递了一个目标文件名来运行我的加载程序脚本和它后面的其他脚本。那么,回到我的第一个问题 - 我如何为文件夹位置中的每个文件运行一系列命令,而不是一次全部运行?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    相关资源
    最近更新 更多