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 中放入啥?