【问题标题】:Rename and overwrite files using wildcard in Windows在 Windows 中使用通配符重命名和覆盖文件
【发布时间】:2019-02-18 04:36:29
【问题描述】:

我正在编写一个用于自动部署的脚本,我需要用相同的文件名替换我的文件。

例如,我的当前目录中有以下文件

deployment.properties
wrapper.conf
config.properties

稍后,我会生成另一组这样的文件

deployment.properties.tokenized
wrapper.conf.tokenized
config.properties.tokenized

最后,我想使用 *.tokenized 版本替换现有配置文件(在第一个代码块中)并删除标记化文件。

在 Linux 中,以下内容可以完成这项工作。但我不知道在 Windows 中该怎么做

for f in *tokenized; 
  do mv "$f" "`echo $f | sed s/tokenized//`";
done

我尝试使用 powershell 的 move-item、rename-item 但仍然无法找到正确的方法。有人可以帮忙吗?欢迎使用 bat / powershell 脚本。使用循环也可以。谢谢。

【问题讨论】:

    标签: powershell batch-file rename wildcard


    【解决方案1】:

    几乎是相同的代码,但在cmd / batch files 中我们可以访问文件名的元素。

    从命令行

    for %a in (*.tokenized) do move /y "%a" "%~na"
    

    或者,对于批处理文件(您需要转义 for 可替换参数)

    for %%a in (*.tokenized) do move /y "%%a" "%%~na"
    

    由于文件的扩展名(最后一个点之后的文本)是.tokenized,因此当您只请求所引用文件的名称(不带扩展名)(%%~na)时,您将获得原始文件名。

    【讨论】:

      【解决方案2】:

      这个 PowerShell 脚本应该可以完成这项工作:

      Get-ChildItem *.tokenized | % {
          move $_.Name ([System.IO.Path]::GetFileNameWithoutExtension($_.Name)) -Force
      }
      

      【讨论】:

      • 对不起。确切地说,我可能想将文件从“myfile.to.be.tokenized”移动到“myfile”。如果它只删除扩展名,它会是“myfile.to.be”吗?
      • 是的,这只会删除最后一部分。
      • 谢谢。在这种情况下,我可以多次运行它,直到所有扩展都消失。
      猜你喜欢
      • 2018-09-04
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 2014-08-05
      相关资源
      最近更新 更多