gpt4 book ai didi

batch-file - 从 Windows 批处理 (.bat) 脚本中回显带有 Unix 行结尾的文本

转载 作者:行者123 更新时间:2023-12-04 00:06:31 25 4
gpt4 key购买 nike

假设我有以下批处理脚本:

For ... DO (
SET VAL=%%B
IF defined VAL echo %%A=%%B >> %OUTPUT_FILEPATH%
)

我怎样才能得到 echo使用Unix(只是换行符)行尾输出?

或者,我可以按原样编写文件然后从批处理脚本转换它吗? (某种查找/r/n 并替换为/n?如果是这样,我该怎么做?)

我想要一个独立的解决方案(即不涉及下载额外实用程序的解决方案,并且可以在批处理脚本本身 [Windows 7] 中完成)。

最佳答案

执行这种转换的合适方法不是通过批处理文件,而是使用另一种编程语言,如 JScript;这样,转换过程既快速又可靠。但是,您不需要数百行程序来实现像这样简单的替换。下面的两行批处理文件执行此转换:

@set @a=0 /* & cscript //nologo //E:JScript "%~F0" < input.txt > output.txt & goto :EOF */

WScript.Stdout.Write(WScript.Stdin.ReadAll().replace(/\r\n/g,"\n"));

编辑 :我对原始代码进行了修改,允许以标准方式在 Batch 部分包含更多命令。
@set @a=0 /*

@echo off
set "OUTPUT_FILEPATH=C:\Path\Of\The\File.txt"
cscript //nologo //E:JScript "%~F0" < "%OUTPUT_FILEPATH%" > output.txt
move /Y output.txt "%OUTPUT_FILEPATH%"

goto :EOF */

WScript.Stdout.Write(WScript.Stdin.ReadAll().replace(/\r\n/g,"\n"));

第一行是隐藏 cscript 的技巧来自 JScript 代码的命令,因此此混合 .BAT 文件的编译不会发出错误。

在 JScript 代码中: WScript.Stdin.ReadAll()读取整个重定向的输入文件;如果文件很大,这可能会导致问题。 replace方法使用正则表达式来识别要替换的文本并将第二个字符串放在其位置;您可以在 this link 阅读有关此主题的进一步说明。 . WScript.Stdout.Write只需从替换中获取输出并将其发送到屏幕。简单!不是吗? ;-)

关于batch-file - 从 Windows 批处理 (.bat) 脚本中回显带有 Unix 行结尾的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40803502/

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