您现在的位置是:首页 >技术教程 >windows redis配置文件使用powershell脚本修改遇到的问题网站首页技术教程

windows redis配置文件使用powershell脚本修改遇到的问题

三希 2023-06-05 04:00:02
简介windows redis配置文件使用powershell脚本修改遇到的问题

问题说明

windows系统下redis安装完成之后,需要利用powershell脚本自动取修改配置文件启用密码。

设置完成之后发现识别不到设置密码

根本原因

原因是使用powershell修改密码之后存储的文件格式变成windows下的格式了, 而默认的配置文件,是需要unix文件格式的

确认问题的方法

用到的工具: winmerge

下载地址  WinMerge - You will see the difference…

是开源的项目哦 ,使用起来也很方便

通过文件对比的功能,查看修改之前的和修改之后的配置文件,可以看到内容除掉密码相关配置外外完全一样,但是编码方式是不一样的 

处理办法

参考链接  Windows命令转换Unix行尾?答案 - 爱码网 (likecs.com)

我选择的是方案4,用起来很方便,直接贴到脚本中即可 

【解决方案1】:

这实际上可以使用包含在 Windows NT 和更高版本中的more 命令非常容易地完成。要将包含 UNIX EOL(行尾)  的 input_filename 转换为包含 Windows EOL   的 output_filename,只需执行以下操作:

TYPE input_filename | MORE /P > output_filename

more 命令具有您可能不知道的其他格式选项。运行more/? 以了解more 还能做什么。

【解决方案2】:

使用unix2dos 实用程序。您可以下载二进制文件here

【讨论】:

  • 再次,它只是记事本++的替代品。不会真正让这个自动化。我将不得不运行这个工具。到目前为止,我确实更改了 notepad++ 中的行尾。

  • 它是一个命令行工具。它更适合自动化,然后是 GUI 工具。您可以编写一个定期的at 作业,它会过滤您放置批处理文件的某个文件夹中的所有文件。这完全取决于您所说的自动化是什么意思。

【解决方案3】:

我正在处理 CRLF 问题,所以我决定构建非常简单的转换工具(在 NodeJS 中):

我是NodeJS EOL converter CLI

所以如果你安装了 NodeJS 和 npm,你可以试试:

npm i -g eol-converter-cli
eolConverter crlf "**/*.{txt,js,java,etc}"

可以使用 Glob 正则表达式(与 shell 中的正则表达式相同)动态配置路径。

因此,如果您可以使用 NodeJS,那真的很简单,您可以集成此命令将整个工作区转换为所需的行尾。

【讨论】:

【解决方案4】:

您无需使用 VBScript 中的其他工具即可做到这一点:

Do Until WScript.StdIn.AtEndOfStream
  WScript.StdOut.WriteLine WScript.StdIn.ReadLine
Loop

将以上几行放入一个文件unix2dos.vbs 并像这样运行它:

cscript //NoLogo unix2dos.vbs <C:path	oinput.txt >C:path	ooutput.txt

或者像这样:

type C:path	oinput.txt | cscript //NoLogo unix2dos.vbs >C:path	ooutput.txt

您也可以在 PowerShell 中执行此操作:

(Get-Content "C:path	oinput.txt") -replace "`n", "`r`n" |
  Set-Content "C:path	ooutput.txt"

可以进一步简化为:

(Get-Content "C:path	oinput.txt") | Set-Content "C:path	ooutput.txt"

上述语句无需显式替换即可工作,因为Get-Content 在任何类型的换行符(CR、LF 和 CR-LF)处隐式拆分输入文件,而Set-Content 将输入数组与 Windows 换行符(CR- LF) 在将其写入文件之前。

【解决方案5】:

Windows 的 MORE 不可靠,它不可避免地会破坏 TAB 并添加行。

unix2dos 也是 MinGW/MSYS、Cygutils、GnuWin32 和其他 unix 二进制端口集合的一部分 - 并且可能已经安装。

python 存在时,这一行将任何行尾转换为当前平台 - 在任何平台上:

TYPE UNIXFILE.EXT | python -c "import sys; sys.stdout.write(sys.stdin.read())" > MYPLATFILE.EXT

python -c "import sys; sys.stdout.write(open(sys.argv[1]).read())" UNIXFILE.EXT > MYPLATFILE.EXT

或根据您的平台将单行代码放入 .bat / shell 脚本并放在 PATH 上:

@REM This is any2here.bat
python -c "import sys; sys.stdout.write(open(sys.argv[1]).read())" %1

并像使用该工具

any2here UNIXFILE.EXT > MYPLATFILE.EXT

等等,作者真厉害,竟然有这么多的方案

 

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。