在 Windows 中使用通配符重命名和覆盖文件

Rename and overwrite files using wildcard in Windows

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

比如我当前目录下有以下文件

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 脚本都受到欢迎。使用循环也可以。谢谢。

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

从命令行

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

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

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

由于文件的扩展名(最后一个点后的文本)是 .tokenized,当您仅请求被引用文件的名称(不带扩展名)时 (%%~na),您会得到原始文件名。

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

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