【发布时间】:2016-05-19 14:22:05
【问题描述】:
我正在编写一个脚本,它在 directory1 中选择一个名为 f2 的文件夹,并交叉检查 directory2 中所有文件夹的名称是否匹配,如果为真,它将 f2 从 directory1 复制到 f2 的子目录(文件夹同名)位于目录 2 中。目前,我正在尝试使用 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 循环迭代,因为我认为递归有点太混乱了。对于批处理实现,它总是会出错,即使我知道两个目录中都有同名的文件,我也永远不会得到匹配
【问题讨论】:
-
你正在逃避
",虽然不要结束String。 -
您的问题到底是什么?什么不工作?请附上MCVE。
-
我很抱歉,基本上是批处理文件,它总是出错,而对于 Java 文件,我知道编码很垃圾,所以我想知道我应该往哪个方向发展