Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Замена окончания строк с CrLf на просто Lf (http://forum.oszone.net/showthread.php?t=220069)

xGETSx 09-11-2011 19:30 1791759

Замена окончания строк с CrLf на просто Lf
 
Есть текстовый файл, нужно проверить в каком он формате(Win или UNIX) и если он в формате Win заменить окончания строк на Lf

Не обязательно средствами только bat, но должна быть возможность запуска из командной строки.

Iska 10-11-2011 00:58 1791961

xGETSx, если устроит WSH:
Код:

Option Explicit

Const ForReading = 1
Const ForWriting = 2

Dim strSourceFile
Dim strTempFile
Dim strContent


If WScript.Arguments.Count = 1 Then
        strSourceFile = WScript.Arguments.Item(0)
        strTempFile  = GetTemporaryName()
       
        With WScript.CreateObject("Scripting.FileSystemObject")
                If .FileExists(strSourceFile) Then
                        With .OpenTextFile(strSourceFile, ForReading)
                                strContent = .ReadAll
                                .Close
                        End With
                       
                        With .OpenTextFile(strTempFile, ForWriting, True)
                                .Write Replace(strContent, vbCrLf, vbLf)
                                .Close
                        End With
                       
                        .CopyFile strSourceFile, .BuildPath(.GetParentFolderName(strSourceFile), .GetBaseName(strSourceFile) & ".bak"), True
                        .CopyFile strTempFile, strSourceFile, True
                        .DeleteFile strTempFile
                Else
                        WScript.Echo "File [" & strSourceFile & "] not found"
                End If
        End With
Else
        WScript.Echo "Usage: " & WScript.ScriptName & " <Path to source file>"
End If

WScript.Quit 0
'=============================================================================

'=============================================================================
' Серый форум / vbscript: генерация пути для временного файла или папки
' (http://forum.script-coding.com/viewtopic.php?id=1221)
'=============================================================================
Function GetTemporaryName()
    Const TemporaryFolder = 2
   
    Dim strTempName
   
    With WScript.CreateObject("Scripting.FileSystemObject")
        Do
            strTempName = .BuildPath(.GetSpecialFolder(TemporaryFolder), .GetTempName)
        Loop While .FileExists(strTempName) Or .FolderExists(strTempName)
    End With
   
    GetTemporaryName = strTempName
End Function
'=============================================================================

P.S. Файл читается в память целиком, посему для гигабайтных текстовых файлов не очень годится.


Время: 15:43.

Время: 15:43.
© OSzone.net 2001-