在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 楼答案
java代码中有许多错误:
srcDir.length()
返回由srcDir指向的文件的长度(以字节为单位)destDir
srcDir.equals(destDir)
为true
,则将j
重置为0。所以它会无限重复相同的循环srcDir.equals(destDir)
检查文件是否相等。它们指向两个不同的文件,因此这也是一个错误。也许你需要检查一下名字。类似于srcDir.getName().equals(destDir.getName())
检查此错误,并在问题更新后进行调整