有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Bash中使用Java&在2个单独的目录中循环

我正在编写一个脚本,它在directory1中选择一个名为f2的文件夹,并交叉检查directory2中所有文件夹的名称是否匹配,如果为true,它将f2从directory1复制到位于directory2中的f2(同名文件夹)的子目录中。目前,我正在使用Apache Commons试验Java实现,但我更关心的是bash实现,到目前为止我已经做到了:

Java实现:

import org.apache.commons.lang3.*;

private String src = "";
private String dest = "";

private void setName(String source, String destination) {
    src = source;
    source = destination;
}

private String getSrcName() {
    return src;
}

private String getDestName() {
    return dest;
}

private void loop() {
    File srcDir = new File("\\IGSASCEWGSHARDY\Common Services\Data Management Unit\Surface Water\Field Notes (historic)\ ");
    File destDir = new File("\\IGSASCEWFSZEUS\DataArchive\Surface Water\Data Sites\ ");

        for(int i = 0; i < Files.list(Paths.get(srcDir)).count(); i++) {
            for(int j = 0; j < Files.list(Paths.get(destDir)).count(); j++) {
                if(srcDir.getSrcName().equals(destDir.getDestName())) {

                    FileUtils.copyDirectory(srcDir, destDir);
                    j = 0;
                    System.out.println("Same!");

                } else {
                    System.out.println("Not same!")
                }
            }
        }
    }
}

下面是我的批处理文件实现:

::@ECHO OFF
::setlocal EnableDelayedExpansion
for /d %%i in ("\\IGSASCEWGSHARDY\Common Services\Data Management Unit\Surface Water\Field Notes (historic)\*") do (
    for /d %%j in ("D:\DataArchive\Surface Water\Data Sites\*") do (
        set srcdir="%%~nxi"
        set destdir="%%~nxj"
        if !srcdir! == !destdir! ( echo Same! timeout /t -1 ) else (echo Notsame!)
        echo %srcdir%
        ping 130.11.160.2
    )
)

提前感谢你们的帮助

编辑

很抱歉,我没有说明错误:我在Java的循环部分上画了一个空白,因为通过查看它,我知道这是不对的,但是我只是想知道从这里走到哪里;我只想保留一个for循环迭代,因为我认为递归有点太混乱了。对于批处理实现,它不断出错,而且我从未得到匹配,即使我知道在两个目录中都有同名的文件


共 (1) 个答案

  1. # 1 楼答案

    java代码中有许多错误:

    • srcDir.length()返回由srcDir指向的文件的长度(以字节为单位)
    • 同样适用于destDir
    • 如果srcDir.equals(destDir)true,则将j重置为0。所以它会无限重复相同的循环
    • srcDir.equals(destDir)检查文件是否相等。它们指向两个不同的文件,因此这也是一个错误。也许你需要检查一下名字。类似于srcDir.getName().equals(destDir.getName())

    检查此错误,并在问题更新后进行调整