Windows in命令行中的EOL UNIX .BAT批处理



我正在尝试使用命令行(批处理文件)将文本文件EOL转换为Windows XP计算机上的Windows格式。我怎么做?这是什么命令?谢谢。

这个简单的脚本很快并且运行良好,除了将每个选项卡字符转换为8个空格。可以使用更多/t选项来修改空格的数量,但是没有办法保留选项卡字符。将文件名(可选地使用路径)作为唯一的参数。

@echo off
more %1 >%1.new
move /y %1.new %1 >nul

所需的只是读取并回应每一行。for/f命令是完美的,只是它忽略了空线。在这里,我使用findstr将每条线与行号前缀,然后是:,从而保留空行。然后,我使用搜索并更换以删除数字前缀。我必须在循环中切换延迟扩展,以保留可能出现的任何!。该脚本保留了选项卡,但仅限于每行〜8191字节。它也相对较慢。由于非常大的文件,它会变得非常慢。

@echo off
setlocal disableDelayedExpansion
>%1.new (
  for /f "delims=" %%A in ('findstr /n "^" %1') do (
    set "ln=%%A"
    setlocal enableDelayedExpansion
    echo(!ln:*:=!
    endlocal
  )
)
move /y %1.new %1 >nul

最后,这是一个混合批次/JScript解决方案,非常快,我没有任何限制。

@if (@X)==(@Y) @end /* Harmless hybrid line that begins a JScript comment
::************ Batch portion ***********
@echo off
<%1 cscript //E:JScript //nologo "%~f0" >%1.new
move /y %1.new %1 >nul
exit /b
************* JScript portion **********/
while (!WScript.StdIn.AtEndOfStream) {
  WScript.Stdout.WriteLine(WScript.StdIn.ReadLine());
}

最新更新