gpt4 book ai didi

windows - 在其上运行查找/替换 Powershell 脚本后,批处理文件不再执行

转载 作者:可可西里 更新时间:2023-11-01 11:50:10 24 4
gpt4 key购买 nike

昨天我在我们服务器上的一些批处理文件上运行了以下脚本来替换一个人的电子邮件地址,因为她不再在公司工作。检查文本时,它运行良好,日志文件也正确写入。但是,现在当我双击它时批处理文件不再执行。我看到控制台窗口快速闪烁,但其中似乎没有任何文本。添加 PAUSE 语句没有帮助,因为它似乎不会执行文件中的任何文本。

我将文本复制并粘贴到一个新的批处理文件中,它工作正常。我注意到 powershell 编辑的文件大小为 6KB,而新复制粘贴的文件大小为 3KB,很明显脚本对该文件做了一些意想不到的事情。复制和粘贴每个文件显然违背了使用脚本来批处理事物的目的。我哪里出错了?

我一直在我的开发机器上运行脚本,我对我们网络上的所有内容都拥有完全的管理员权限。

如果重要的话,我们在服务器上运行 Windows Server 2008 R2 Enterprise。

# Finds string in batch files recursively and replaces text with other text
#

#get command line arguments
param (
[string]$Text = $( Read-Host "Input the text to search for"),
[string]$Replacement = $( Read-Host "Input the replacement text")
)

$Today=get-date -format yyyymmdd
$Results = "{server name}\c$\Batch Jobs\Find Text In Batch Jobs\ReplaceTextInBatchJobs-" + $Text + "-" + $Today + ".txt"
$Path = "{server name}\c$\Batch Jobs"

# get all the files in $Path that end in ".bat".
Get-ChildItem $Path -Filter "*.bat" -Recurse |
Where-Object { $_.Attributes -ne "Directory"} |
ForEach-Object {
#Find whether there is a matching string
If (Get-Content $_.FullName | Select-String -Pattern $Text) {
#Replace the text in this file
(Get-Content $_.FullName) | Foreach-Object {$_ -replace $Text, $Replacement} |
Out-File $_.FullName #write the new results back to the file

#write the file name to a log file
$_.FullName >> $Results
}
}

最佳答案

Out-File 默认为 Unicode 编码(这就是文件大小加倍的原因;每个字符为 16 位)。您可以使用 Out-File -Encoding ASCII 或默认为 ASCII 的 Set-Content

关于windows - 在其上运行查找/替换 Powershell 脚本后,批处理文件不再执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31731296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com