一次使用.bat ONE移动文件

时间:2013-04-25 21:52:04

标签: file batch-file console

我有一个.bat文件,可以移动以TEST_开头并以.prn结尾的所有内容。问题是,如果移动多个文件,某些内容将会中断。有没有办法添加参数,每次运行只移动一个文件?

原始代码:

move s:\FILES\TEST_*.prn s:\ANOTHER_PLACE\Processed

此代码有效,但如果两个人同时上传文件,则会移动这两个文件,导致另一端的服务器出现问题。

3 个答案:

答案 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"