Показать полную графическую версию : [решено] Убрать пробелы в конце каждой строки если они есть
Alexander_88
06-11-2021, 09:58
Здравствуйте … Подскажите, как убрать пробелы в конце каждой строки, если они есть? Можно было конечно через notepad++ это сделать, но txt файлов слишком много.
DJ Mogarych
06-11-2021, 10:16
Powershell
dir "C:\temp\123\*.txt" -recurse |% {(gc $_) -replace "\s+$" |Set-Content $_}
на cmd это геморно делать, а на поше сразу есть TrimEnd
$files = Get-ChildItem -Path ./ -Filter *.txt
ForEach($file in $files) {
Get-Content $file | ForEach-Object {$_.TrimEnd()} | Set-Content $file
}
Alexander_88
06-11-2021, 11:19
DJ Mogarych, Elven, спасибо за ответы, Всё работает :)
megaloman
06-11-2021, 17:24
Alexander_88, cmd это геморно делать »И результат можем получить кривой.
Вот .vbs
Я ставил немного более общую задачу. FileFolderIn = "Z:\Box_In\файл с пробелами в конце строки.txt" 'Будет обрабатываться этот файл или папка если в аргументах не будет иного.
''''''''''''FileFolderIn = "Z:\Box_In" 'Будет обрабатываться этот файл или папка если в аргументах не будет иного.
Mask = "^.*\.txt$" 'Если в обработке будет папка, будут обрабатываться файлы по маске
Set FSO = CreateObject("Scripting.FileSystemObject")
With WScript.Arguments
If .Count > 0 Then
For iItem = 0 To .Count - 1
If FSO.FolderExists(.Item(iItem)) Then
Call ViewFolder(FSO, .Item(iItem), Mask)
Else
e = RTrimFile(FSO, .Item(iItem))
End If
Next
Else
If FSO.FolderExists(FileFolderIn) Then
Call ViewFolder(FSO, FileFolderIn, Mask)
Else
e = RTrimFile(FSO, FileFolderIn)
End If
End If
End With
'''''''''''''''End Sub
Sub ViewFolder(FSO, FolName, Mask)
Set Fld = FSO.GetFolder(FolName)
With CreateObject("VBScript.RegExp")
.IgnoreCase = True
.Global = True
.Pattern = Mask
For Each FName In Fld.Files
If .Test(FName) Then
e = RTrimFile(FSO, FName)
End If
Next
End With
End Sub
Function RTrimFile(FSO, FName)
RTrimFile = 0
With FSO
If Not .FileExists(FName) Then
MsgBox "File: " + vbCrLf + FName + vbCrLf + "not exists", 48, "File not exists"
RTrimFile = 1
Exit Function
End If
With .OpenTextFile(FName, 1)
On Error Resume Next
AllTxt = .ReadAll
If Err.Number <> 0 Then
MsgBox "File: " + vbCrLf + FName + vbCrLf + Err.Description, 48, "Error Reading File"
RTrimFile = 2
.Close
On Error GoTo 0
Exit Function
End If
.Close
AllTxt = Split(AllTxt, vbCrLf)
N1 = LBound(AllTxt)
N2 = UBound(AllTxt)
NN = N1 - 1
For i = N1 To N2
AllTxt(i) = RTrim(AllTxt(i))
If Len(AllTxt(i)) <> 0 Then NN = i
Next
End With
With .OpenTextFile(FName, 2)
For i = N1 To NN
.WriteLine AllTxt(i)
Next
.Close
End With
End With
RTrimFile = 0
End Function
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.