批处理文件找到文件,如果它存在与特定扩展名,然后将其复制并粘贴到同一个文件夹中重命名

批处理文件找到文件,如果它存在与特定扩展名,然后将其复制并粘贴到同一个文件夹中重命名

问题描述:

在我的项目中,我想添加本地语言的新资源文件。项目中已经有一些资源文件分布在多个文件夹中。现在我想要一个这样的批处理文件,它以递归方式运行于所有子文件夹中,用于查找名称类似blabla.hi-IN.resx的文件(例如:index.hi-IN.resx,home.hi-IN.resx等)即包含'hi-IN'的文件名。如果它存在于一个文件夹中,则将其复制并粘贴到重命名为blabla.mr-IN.resx的相同文件夹中(例如:index.mr-IN.resx,home.mr-IN.resx)。批处理文件找到文件,如果它存在与特定扩展名,然后将其复制并粘贴到同一个文件夹中重命名


for-each(var folder in folders) 
{ 
    if(Exist(*G.hi-IN.resx)) 
    { 
     Copy(); 
     Paste(); 
     rename(name); 
    } 
} 
    void rename(string name) 
    { 
     remove hi-IN; 
     append mr-IN; 
    } 
+0

我为你提供一个解决方案。请参阅答案中的powershell脚本。如果脚本符合您的期望,请提高我的答案。 –

你的任务可以用我的小PowerShell脚本来完成。

这将提取所有文件高新IN.resx

$files = gci -Filter *hi-IN.resx -Recurse 

这是为了准备一个正则表达式对象,它可删除高新IN.resx在文件名结尾递归。

$reg = [regex]::new("hi-IN.resx") 

这反复遍历在第一步找到的所有文件。为每个文件执行一个副本。该目标文件名使用制备步骤2

$files | foreach { Copy-Item $_.FullName ($r.Replace($_.FullName,"")+"mr-IN.resx") } 

编写正则表达式的对象这是一个完整的脚本:

$files = gci -Filter *hi-IN.resx -Recurse 
$reg = [regex]::new("hi-IN.resx") 
$files | foreach { Copy-Item $_.FullName ($r.Replace($_.FullName,"")+"mr-IN.resx") }