Loops 一次对每个文件执行多个批处理命令
如何逐个为多个文件执行多个批处理命令。也就是说,如果我想首先将一个文件从一个文件夹移动到一个工作文件夹,将该文件重命名为csv格式,调用一个sqlloader脚本,调用第二个sql脚本,最后调用另一个sql脚本,那么上面的所有步骤都不应该针对所有文件,而是一次针对一个文件。我尝试了以下类似的方法,但此时出现了\Downloads\Validation\Prestage*.psa错误。我不能在循环条件中传递通配符*.psa吗 非常感谢并感谢您在这方面花费的时间Loops 一次对每个文件执行多个批处理命令,loops,batch-file,Loops,Batch File,如何逐个为多个文件执行多个批处理命令。也就是说,如果我想首先将一个文件从一个文件夹移动到一个工作文件夹,将该文件重命名为csv格式,调用一个sqlloader脚本,调用第二个sql脚本,最后调用另一个sql脚本,那么上面的所有步骤都不应该针对所有文件,而是一次针对一个文件。我尝试了以下类似的方法,但此时出现了\Downloads\Validation\Prestage*.psa错误。我不能在循环条件中传递通配符*.psa吗 非常感谢并感谢您在这方面花费的时间 echo off
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
谢谢,
桑德斯。你的策略是正确的 有一个小的语法错误:您需要在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>
)
谢谢你的回复。但是,我在执行脚本时仍然遇到语法错误。这是我的脚本-echo off:MAIN copy C:\Downloads\Prevalidation*.psa C:\Downloads\Validation\Prestage*.psa确实移动%%A C:\Downloads\Validation\WIP\%%~nA.psa psaload.csv调用C:\CAP\SPS\Batchscripts\runloader.bat调用C:\CAP\u SPS\Batchscripts\runupdate.bat调用C:\CAP\u SPS\Batchscripts\runvalidation.bat del C:\Downloads\Validation\WIP\psaload.csvexit@user982201:我建议在move和ren命令的名称周围使用引号,如move%%A C:\Downloads\Validation\WIP\%%~nA.psa@user98822哪个命令失败?。。。在所有命令前面加上echo并在filename.PA周围加引号-重命名文件时失败。作为命令语法的错误消息不正确。我想我知道原因。上面的循环未按预期工作。它将所有*.psa文件从Prestage文件夹移动到WIP文件夹,然后程序无法理解重命名为哪个文件,因为我正在传递一个目标文件名,以运行我的加载程序脚本和随后的其他脚本。那么,回到我的第一个问题——如何为文件夹位置中的每个文件运行一系列命令,而不是一次运行所有文件?