我有一个 .bat 文件,它可以移动以 TEST_ 开头并以 .prn 结尾的所有内容。问题是,如果移动了多个文件,就会出现问题。有没有办法添加一个参数来每次运行只移动一个文件?
原始代码:
move s:\FILES\TEST_*.prn s:\ANOTHER_PLACE\Processed
这段代码有效,但如果两个人同时上传一个文件,它会移动两个文件,导致另一端的服务器出现问题。
我有一个 .bat 文件,它可以移动以 TEST_ 开头并以 .prn 结尾的所有内容。问题是,如果移动了多个文件,就会出现问题。有没有办法添加一个参数来每次运行只移动一个文件?
原始代码:
move s:\FILES\TEST_*.prn s:\ANOTHER_PLACE\Processed
这段代码有效,但如果两个人同时上传一个文件,它会移动两个文件,导致另一端的服务器出现问题。
如果我理解得很好,这就是你想要的:
@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。
我希望这有帮助。
如果我理解,您希望move
每个文件执行一次,而不是一次执行所有文件。你可以这样做:
FOR %%f IN (s:\FILES\TEST_*.prn) DO (
move %%f s:\ANOTHER_PLACE\Processed\
)
因此,对于每个%%f
匹配的文件s:\FILES\TEST_*.prn
,您执行move
.
FOR %%f IN ("s:\FILES\TEST_*.prn") DO set "file=%%~ff"
if defined file move "%file%" "s:\ANOTHER_PLACE\Processed"