我有一个.bat文件,可以移动以TEST_开头并以.prn结尾的所有内容。问题是,如果移动多个文件,某些内容将会中断。有没有办法添加参数,每次运行只移动一个文件?
原始代码:
move s:\FILES\TEST_*.prn s:\ANOTHER_PLACE\Processed
此代码有效,但如果两个人同时上传文件,则会移动这两个文件,导致另一端的服务器出现问题。
答案 0 :(得分:1)
如果我理解,您希望每个文件执行一次move
,而不是一次执行所有文件。你可以这样做:
FOR %%f IN (s:\FILES\TEST_*.prn) DO (
move %%f s:\ANOTHER_PLACE\Processed\
)
因此,对于匹配%%f
的每个文件s:\FILES\TEST_*.prn
,您执行move
。
答案 1 :(得分:1)
如果我说得好,这就是你想要的:
@Echo OFF
Set "InputDir=s:\FILES"
Set "OutputDir=s:\ANOTHER_PLACE\Processed"
Set "Pattern=TEST_*.prn"
FOR %%# IN ("%InputDir%\%Pattern%") DO ((Move "%%f" "%OutputDir%\" && Exit /B 0) || (Exit /B 1))
它按字母顺序移动第一个文件,然后退出。
如果文件向右移动,它也返回0,如果因任何原因无法移动文件,则返回1。
我希望这会有所帮助。
答案 2 :(得分:0)
FOR %%f IN ("s:\FILES\TEST_*.prn") DO set "file=%%~ff"
if defined file move "%file%" "s:\ANOTHER_PLACE\Processed"