1

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

原始代码:

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

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

4

3 回答 3

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。

我希望这有帮助。

于 2013-04-25T22:47:11.977 回答
1

如果我理解,您希望move每个文件执行一次,而不是一次执行所有文件。你可以这样做:

FOR %%f IN (s:\FILES\TEST_*.prn) DO (
    move %%f s:\ANOTHER_PLACE\Processed\
)

因此,对于每个%%f匹配的文件s:\FILES\TEST_*.prn,您执行move.

于 2013-04-25T22:07:24.447 回答
0
FOR %%f IN ("s:\FILES\TEST_*.prn") DO set "file=%%~ff"
if defined file move "%file%" "s:\ANOTHER_PLACE\Processed"
于 2013-04-26T02:22:19.577 回答