Command line 命令行中的eol unix到windows。bat批处理
我正在尝试使用命令行(批处理文件)在windows xp计算机上从unix将文本文件eol转换为windows格式。我该怎么做?这是什么命令?谢谢。这个简单的脚本速度很快,除了将每个制表符转换为8个空格外,效果非常好。可以使用MORE/T选项修改空格数,但无法保留制表符。将文件名(可选带路径)作为唯一参数传递Command line 命令行中的eol unix到windows。bat批处理,command-line,batch-file,converter,eol,Command Line,Batch File,Converter,Eol,我正在尝试使用命令行(批处理文件)在windows xp计算机上从unix将文本文件eol转换为windows格式。我该怎么做?这是什么命令?谢谢。这个简单的脚本速度很快,除了将每个制表符转换为8个空格外,效果非常好。可以使用MORE/T选项修改空格数,但无法保留制表符。将文件名(可选带路径)作为唯一参数传递 @echo off more %1 >%1.new move /y %1.new %1 >nul 所需要做的就是读取和回显每一行。FOR/F命令非常完美,只是它忽略了空行。在
@echo off
more %1 >%1.new
move /y %1.new %1 >nul
所需要做的就是读取和回显每一行。FOR/F命令非常完美,只是它忽略了空行。在这里,我使用FINDSTR在每一行前面加上行号,后跟一个:
,从而保留空行。然后我使用search和replace删除数字前缀。我必须在循环中打开和关闭延迟扩展,以保留任何可能出现的代码>。此脚本保留制表符,但限制为每行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
最后,这里是一个混合的batch/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());
}
@if(@X)=(@Y)@end/*开始JScript注释的混合行
::**********批量部分***********
@回音
%1.新
移动/y%1。新建%1>nul
退出/b
*************JScript部分**********/
而(!WScript.StdIn.AtEndOfStream){
WScript.Stdout.WriteLine(WScript.StdIn.ReadLine());
}
也许你可以在你的机器上找到一些dos2unix
实用程序。或者unix2dos
例如,我不知道如何在命令行中使用这个意大利语:|