我使用下面的批处理脚本根据相同的匹配文件名将.class文件从dir sourcedir2复制到dir sourcedir1。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir1=U:\sourcedir\changeset"
SET "sourcedir2=U:\sourcedir\target"
FOR /f "delims=" %%a IN ('dir /b /s /a-d "%sourcedir1%\*.java" ') DO (
SET "javadir=%%~dpa"
SET "classfile=!javadir:%sourcedir1%=%sourcedir2%!%%~na.class"
IF EXIST !classfile! ECHO COPY "!classfile!" "%%a"
)
GOTO :EOF
除此之外,我想将.class文件从dir sourcedir2复制到classname $ number.class(例如:Action $ 1.class,Action $ 2.class)到dir sourcedir1。
我尝试了如下所示的SET类文件更改,但它也会复制不是类名$ number.class
格式的文件SET "classfile=!javadir:%sourcedir1%=%sourcedir2%!%%~na*.class"
请建议我使用Regularexpression匹配文件名,格式为classname $ number.class或classname.class。
谢谢..
答案 0 :(得分:0)
此PowerShell脚本根据匹配类名的正则表达式和.class扩展名之前的任何数字的文件名从sourcedir2复制到sourcedir1。如果您确信将复制正确的文件,请从Copy-Item cmdlet中删除-WhatIf
。
$sourcedir1 = 'C:\src\t\j1'
$sourcedir2 = 'C:\src\t\j2'
Get-ChildItem -Path $sourcedir1 -File -Recurse -Filter '*.java' |
ForEach-Object {
$classname = $_.BaseName
Get-ChildItem -Path $sourcedir2 -File -Filter "$classname*.class" |
Where-Object { $_.Name -match "$classname\$[0-9]*\.class" } |
ForEach-Object { Copy-Item $_.FullName $sourcedir1 -WhatIf }
}
要从cmd shell运行此命令,请将上面的代码放入copyclasses.ps1等文件中并使用:
powershell -NoProfile -File .\copyclasses.ps1
答案 1 :(得分:0)
我可以通过以下脚本找到解决方法解决方案。谢谢。
onDataChange()