Windows 用于查找和替换多个子文件夹中的文件的Bat脚本-将.java文件替换为特定文件夹中的.class文件
我不熟悉windows批处理脚本。。请在此场景中提供帮助 我的文件结构如下所示: dir1: c:\workspace\changeset\com\folder 子文件夹1Windows 用于查找和替换多个子文件夹中的文件的Bat脚本-将.java文件替换为特定文件夹中的.class文件,windows,batch-file,cmd,windows-scripting,Windows,Batch File,Cmd,Windows Scripting,我不熟悉windows批处理脚本。。请在此场景中提供帮助 我的文件结构如下所示: dir1: c:\workspace\changeset\com\folder 子文件夹1 one.java 子文件夹-2 2.java dir2: c:\workspace\target\class\com\folder 子文件夹1 一级 子文件夹2 二级 子文件夹3 三级 需要从dir2文件(即1.class和2.class)中查找并替换相应子文件夹(即1.java和2.java)中的dir
- one.java
- 2.java
- 一级
- 二级
- 三级
ECHO COPY
更改为COPY
,以实际复制文件。追加>nul
以抑制报告消息(例如,1个复制的文件
)
请注意,直接从提示符执行和作为批处理文件的行执行是不同的。如果从命令提示符执行,元变量(循环控制变量)%%x
必须被引用为批处理行的%%x
,并且%x
。由于在提示符下重复执行包含
的行没有什么意义(创建批处理文件更容易),因此我发布了批处理文件版本。如果需要,用户有责任调整直接从提示
读取不带目录的/b
基本格式/a-d
中的每个文件名,并将文件名+扩展名分配给%%a
如果另一个目录中存在名为namepartoffile.class的文件,请将该文件复制到第一个目录
请发布待解决的整个问题。这种方法可能会发生根本性的变化,就像在这种情况下一样
@ECHO关闭
SETLOCAL ENABLEDELAYEDEXPANSION
设置“sourcedir1=U:\sourcedir\changeset”
设置“sourcedir2=U:\sourcedir\target”
对于/f“delims=”%%a IN(
'dir/b/s/a-d“%sourcedir1%\*.java”'
)做(
设置“javadir=%%~dpa”
设置“classfile=!javadir:%sourcedir1%=%sourcedir2%!%%~na.class”
如果存在!classfile!回显副本“!classfile!”“%%a”
)
后藤:EOF
您需要更改sourcedir1
和sourcedir2
的设置以适应您的环境
本质上,相同的方法和相同的注释重新传递了消息。不同之处在于,此过程使用dir
列表中的文件和子目录,并在导出.class
文件的预期名称时替换directoryname的第一部分。发布您所做的一切,谢谢Magoo。。我还有一个问题。。就像我们在dir1和dir2中有子文件夹一样。然后如何搜索.Java和.Class文件并将它们复制到各自的文件夹中。。。
for /f "delims=" %%a in ('dir /b /a-d "c:\workspace\changeset\com\folder\*.java"') do (
if exist "c:\workspace\target\class\com\folder\%%~na.class" (
echo copy "c:\workspace\target\class\com\folder\%%~na.class" "c:\workspace\changeset\com\folder\%%a")
)