首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不大幅增加文本文件大小的情况下将文本文件保存在PowerShell中?

如何在不大幅增加文本文件大小的情况下将文本文件保存在PowerShell中?
EN

Stack Overflow用户
提问于 2020-11-27 09:48:47
回答 2查看 38关注 0票数 0

我有一个PowerShell脚本,它可以将文本添加到行中,或者在文件为空时创建行,但是它会使文件(应该是一个简单的文本文件,但具有自定义扩展名".env")无效。我的代码如下所示:

代码语言:javascript
运行
复制
$menvs = @()
$paths = @()
Get-ChildItem -Path c:\Users\$env:UserName\Documents\maya\ -filter Maya.env -Recurse | % {
     $menvs = $menvs + $_.FullName
}

Foreach($fl in $menvs){
    if ((Get-Content $fl) -eq $null){
        $paths = @("MAYA_SCRIPT_PATH = P:/InProd/tools/maya/mel;P:/InProd/tools/maya/mel/nativeMaya",
                        "XBMLANGPATH = P:/InProd/tools/maya/icons",
                        "MAYA_PLUG_IN_PATH = P:/InProd/tools/maya/plugins",
                        "PYTHONPATH = P:/InProd/tools/maya/python")
    }
    else {
        $paths = Get-Content $fl
        for ($i = 0; $i -lt $paths.Length; $i++){
            if ($paths[$i] -match "MAYA_SCRIPT_PATH"){
                $paths[$i] = $paths[$i] +";P:/InProd/tools/maya/mel;P:/InProd/tools/maya/mel/nativeMaya"
            }
            if ($paths[$i] -match "XBMLANGPATH"){
                $paths[$i] = $paths[$i] +";P:/InProd/tools/maya/icons"
            }
            if ($paths[$i] -match "MAYA_PLUG_IN_PATH"){
                $paths[$i] = $paths[$i] +";P:/InProd/tools/maya/plugins"
            }
            if ($paths[$i] -match "PYTHONPATH"){
                $paths[$i] = $paths[$i] +";P:/InProd/tools/maya/python"
            }
        }
    }
    if($paths){
        $paths | Out-File $fl
        "paths updated in $fl"
    }
}

它的输入写得很好,我可以在任何文本编辑器中阅读它,但我注意到文件大小比我通过文本编辑器手动输入信息要大4*,而且这个文件的应用程序根本不再读取它,它识别文件在那里,但不再尝试读取它。我是不是遗漏了什么?除了Out-File之外,我还需要确保它是一个基本的文本文件吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-27 10:06:17

我建议你总是像这样重写你的文件:

代码语言:javascript
运行
复制
$Content =@"
MAYA_SCRIPT_PATH =P:/InProd/tools/maya/mel;P:/InProd/tools/maya/mel/nativeMaya
XBMLANGPATH = P:/InProd/tools/maya/icons
MAYA_PLUG_IN_PATH = P:/InProd/tools/maya/plugins
PYTHONPATH = P:/InProd/tools/maya/python
"@

Get-ChildItem -Path "c:\Users\$env:UserName\Documents\maya\" -file -filter Maya.env -Recurse | %{
    Set-Content -Path $_.FullName -Value $Content -Encoding Default
    "paths updated in " + $_.FullName 
}
票数 1
EN

Stack Overflow用户

发布于 2020-11-27 10:04:41

啊哈我找到答案了here

我的Out-File线路上需要-Encoding Default标志。呼。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65031161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档