比较和移动文件集

时间:2013-09-04 20:48:05

标签: batch-file scripting cmd

我需要一个查看文件并移动一组文件的批处理文件 问题是,它需要比较文件,因为可能有多于1套

文件彼此对应

集合中的第一个文件是BIAK1234
第二个文件是BIPO1234
请注意,1234只是文件编号,将指示它是

的一部分

因此批处理文件必须找到文件集 - BIAK1234 and BIPO1234并将它们移动到另一个文件

如果BIAK1234不存在则脚本需要结束

但如果有文件:BIAK1234,BIAK12345,BIPO 1234,BIPO12345和BIPO123456

bipo123456必须保留,直到BIAK123456存在,然后可以移动

所以如何比较文件

我已经知道如何制作批处理文件移动文件以及如何检查文件是否存在我只是不太确定如何比较文件,确定集合并仅移动集合

1 个答案:

答案 0 :(得分:2)

我对你的问题有点挣扎。起初我以为你是从文本文件中获取文件名。但是你的最后一段让我相信你只是处理文件夹中的文件。

正如你所说,唯一适度棘手的一点是确定各个集ID。解决方案是使用SET命令获取子字符串,或者替换前缀为nothing。从命令提示符处键入set /?以获取更多信息。

在下面的解决方案中,我选择使用搜索和替换方法。

@echo off
setlocal enableDelayedExpansion

set "source=c:\yourSourceFolder"
set "destination=c:\yourDestinationFolder"
set "file1=BIAK"
SET "file2=BIPO"

pushd "%source%"
for %%F in ("%file1%*") do (
  set "setID=%%F"
  set "setID=!setID:%file1%=!"
  if exist "%file2%!setID!" move "%%F","%file2%!setID!" "%destination%"
)
popd