在2个文件中查找字符串,然后移动文件。批量

时间:2013-11-25 17:17:18

标签: windows batch-file if-statement

我最近问了一个关于查找具有相同ID的文件然后移动它们的问题。 虽然我正在移动的文件没有相同的ID。相反,它们在文件中具有相同的字符串。 这是我找到相同ID文件的代码

ECHO OFF
setlocal enableDelayedExpansion

set "source=C:SORCEFOLER"
set "destBIAK=C:BIAKFOLER"
set "destBIPO=C:BIPOFOLDER"
set "POfile=BIPO"
SET "AKfile=BIAK"

pushd "%source%"
for %%F in ("%POfile%*") do (
  set "setID=%%F"
  set "setID=!setID:%POfile%=!"
  if exist "%AKfile%!setID!" robocopy /mov "%source%" "%destbiak%" "%%F" 
  if exist "%AKfile%!setID!" robocopy /mov "%source%" "%destbipo%" "%AKfile%!setID!"
)
popd

就像我说的,我需要找到一个匹配两个不同的字符串,然后根据字符串移动它们。

以下是第一个文件

开头的示例
H|0003341369|20131123

我无法发布整个PO文件,因为它包含客户名称和地址,这些是我正在为其制作文件的人的专有信息。

这是整个AK文件

0003341369|SO-02052|20131124|A|

那只是一堆数字。请注意,PO文件的数字3到12匹配AK文件的数字1到10。

一个文件夹中有多个AK文件和PO文件。

我原以为脚本会找到AK文件的ID,搜索所有PO文件,直到找到匹配的文件然后移动它们。

我查看了几个搜索字符串的脚本,然后将带有字符串的文件名输出到某个文件。我无法弄清楚如何将其输出为变量。 感谢

1 个答案:

答案 0 :(得分:0)

这应该是每个AK.*文件中的第一个字词(第一个|字符之前的字符,例如0003341369),并在每个PO.*文件中搜索它。

如果它在两个||字符(例如|0003341369|)内找到该字词,那么它会将这些文件移动到一个文件夹中 - 在比较所有PO.*个文件后,它将移动{ {1}}文件到同一个文件夹。

AK.xxx