Power Shell:需要在文件内容中放入文件具体名称

Posted

技术标签:

【中文标题】Power Shell:需要在文件内容中放入文件具体名称【英文标题】:Power Shell: Need to put the file specific name in the file content 【发布时间】:2022-01-22 20:30:08 【问题描述】:

我有一个文件 test001.txt,我需要用文件名替换一个单词。例如:

文件名:test001.txt 包含“送礼物给客户”

我需要将 CUSTOMER 替换为文件名“test001”,但要自动生成。这意味着我在一个文件夹中有多个文件,我想将它们复制到另一个文件夹中,并且当我复制它们时,我希望所有文件都用该单词替换其文件名的名称

test001, test002, test003 ..etc,所以每个文件中都不是 CUSTOMER,而是:test001, test002, test003...

我试过了:

Copy-Item "C:\Location1\*" -Destination "C:\location2"  -----to copy all files 

$fileName = "C:\Location1\*"   ----to take names for all files

$currentDate = get-date -format "yyMMdd"

$automationTest = "C:\Location2\test1.DDI"  ---name of new file

$content = [System.IO.File]::ReadAllText($automationTest).Replace("CUSTOMER",$fileName)
[System.IO.File]::WriteAllText($automationTest, $content)

但它实际上替换为“C:\Location1*”,而不是该位置的文件名

有什么想法吗?感谢你! :)

【问题讨论】:

【参考方案1】:

您可以为此使用Get-ChildItem 和一个循环。 BaseName 是下面代码中不带扩展名的文件名,请注意我使用的是-creplace,它区分大小写(“customer”不会被替换,但“CUSTOMER”会)如果你不需要这个使用-replace

$replaceWord = 'CUSTOMER'

Get-ChildItem path/to/giftfiles -Filter *.txt | ForEach-Object 
    (Get-Content $_ -Raw) -creplace $replaceWord, $_.BaseName |
    Set-Content $_.FullName

【讨论】:

这对我有用,谢谢! :) 但是如果我要替换多个单词呢?例如 word1、word2、word3 替换为 Sarah、Josh、Hannah? @FlamingoGo 需要一些不同的和更复杂的东西,你能就这个新要求提出一个新问题吗?请在此处提供详细信息,并随时在您的问题上使用此代码。

以上是关于Power Shell:需要在文件内容中放入文件具体名称的主要内容,如果未能解决你的问题,请参考以下文章

在二进制数据文件的标头中放入啥

win10用power shell安装appx文件怎么改安装路径

我需要Power Shell脚本的帮助,以便在C: onsomepath上比较日志文件的字符串值后在C: onsomepath上创建输出文件

当使用 conda-build 构建 conda 包并且我的代码使用纯 python 库时,我需要在 meta.yaml 文件中的 build/host/run 中放入啥?

在 Power BI 中导入 .BAK

HTML网页中放入图片