• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Plik .bat który dodaje spacje, co jakiś odstep ze spójnego ciągu znaków.

Fiszki IT
Fiszki IT
+1 głos
192 wizyt
pytanie zadane 22 czerwca 2020 w Inne języki przez Tine Użytkownik (690 p.)
Witam wszystkich,

Czy jest możliwosc napisania pliku bat, ktory z danego ciągu znaków np. 312423452345723684418764t1253612436512453412536512436761222223524351243512436541231243444444441652436712355126735712536124361245333333387126381264517774189237891243120444129841255552305802999587, zapisanego np w znaki.txt, będzie dodawał spacje (odstęp), co 4 znak i nastepnie tak wygenerowany ciąg znaków zapisywał w pliku tekstowym?

Dla jasności mam taki ciąg znaków : 235137890263

I po przekształceniu takiego ciągu znaków przez plik bat lub jaki kolwiek inny sposób odrzymać nastepujący ciąg znaków :2351 3789 0267

Który bedzie zapisywany w ciagspace.txt

Może są do tego jakieś programy?

Może ktoś wie jak zrobic taki plik bat?

Dzieki za pomoc!

2 odpowiedzi

+2 głosów
odpowiedź 22 czerwca 2020 przez tkz Nałogowiec (39,540 p.)
wybrane 22 czerwca 2020 przez Tine
 
Najlepsza
file = open("liczby.txt", "r").read()
open("costam.txt", "w").write(
    ' '.join([file[i:i+4] for i in range(0, len(file), 4)]))

 

komentarz 22 czerwca 2020 przez Tine Użytkownik (690 p.)
Może wie ktoś jak można to zrobić w pliku .bat ?

 

Dzięki za pomoc!
1
komentarz 22 czerwca 2020 przez tkz Nałogowiec (39,540 p.)
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET /p STR=<liczby.txt

REM Split STR by N characters
SET "N=4"

:LOOP
SET "RES=%RES%!STR:~0,%N%! "
SET "STR=!STR:~%N%!"
IF DEFINED STR GOTO LOOP
ECHO |set /p="%RES:~0,-1%">text.txt

Nie wiem dlaczego bat ponad python...

komentarz 22 czerwca 2020 przez Tine Użytkownik (690 p.)
edycja 22 czerwca 2020 przez Tine
Nie każdy na komputerze ma zainstalowane środowisko pythona, a bat praktycznie każdy.

 

Dzięki za pomoc!
komentarz 22 czerwca 2020 przez tkz Nałogowiec (39,540 p.)
Niby tak, ale spójrz na czytelność kodu.
komentarz 22 czerwca 2020 przez Tine Użytkownik (690 p.)
edycja 23 czerwca 2020 przez Tine
Po testowaniu: Progam bat działa i dodaje odstepy co 4 znak ale tylko gdy w pliku.txt nie ma zbyt dużo cyfr, umieśćiłem w pliku text.txt liczby od 1 do 100000 (ciąg licz bez odstępów) i progam bat nie działa dla tak dużego pliku, nie wiem od czego to zależy ale po odpaleniu bata w pliku text.txt cała zawartość ( liczby od 1 do 10000) zostały ununięte i widoczny jest następujący text: ~0,4 ~4 Mógłbys mi wyjaśnic dlaczego tak sie dzieje? Dzieki za pomoc !
1
komentarz 22 czerwca 2020 przez tkz Nałogowiec (39,540 p.)
Maksymalny rozmiar dla stringa w batchu to 8191 dla 64 bitowej maszyny. Zamiana na liczbę całkowitą nic nie da. Zostaje python. Chyba, że będziesz czytał sekwencyjnie...
+2 głosów
odpowiedź 22 czerwca 2020 przez VBService VIP (123,360 p.)
edycja 23 czerwca 2020 przez VBService

split4.vbs

Option Explicit

On Error Resume Next

Dim oShell
Dim oFso, oFile
Dim sSource, sDestiny
Dim sLine, cLine, cLineFormat, iStep
Dim fName, fSize

Const READ = 1
Const OVERWRITE = True
Const OPEN = False
Const SPACECHAR = " "

iStep = 4
sLine = VbNullString
sSource = "znaki.txt"
sDestiny = "ciagspace.txt"

Set oShell = WScript.CreateObject("WScript.Shell")
Set oFso = CreateObject("Scripting.FileSystemObject")
sSource = oFso.BuildPath(oShell.CurrentDirectory, sSource)
sDestiny = oFso.BuildPath(oShell.CurrentDirectory, sDestiny)

If oFso.FileExists(sSource) Then
    Set oFile = oFso.GetFile(sSource)
    fName = oFile.Name
    fSize = SizeSuffix(oFile.Size)

    Set oFile = oFso.OpenTextFile(sSource,READ,OPEN)
    Do Until oFile.AtEndOfStream
        sLine = sLine & oFile.ReadLine
    Loop
    oFile.Close

    cLine = Len(sLine)
    cLineFormat = FormatNumber(cLine, False)

    Msgbox "Nazwa pliku:  " & fName & vbCrLf & _
            "     Wielkosc:  " & fSize & vbCrLf & _
            "    Ilosc cyfer:  " & cLineFormat, _
            vbOkOnly, "Plik wczytany"

    Dim i, sWriteLine

    sWriteLine = VbNullString
    Set oFile = oFso.CreateTextFile(sDestiny, OVERWRITE)    

    For i = 1 To cLine Step iStep
        sWriteLine = Mid(sLine, i, iStep) & SPACECHAR
        ' Msgbox "i = " & i & vbCrLf & "Mid = " & sWriteLine
        oFile.Write sWriteLine
    Next

    oFile.Close
    Set oFile = Nothing

    If Err.Number = 0 Then
        fName = oFso.GetFileName(sDestiny)
        Msgbox "Plik zostal zapisany:  " & fName, vbOkOnly, "Plik zapisany"
    Else
        Msgbox Err.Number & " Srce: " & Err.Source & vbCrLf & _
                " Desc: " &  Err.Description, vbOkOnly, "Error"
        Err.Clear
    End If
Else
    Msgbox "Plik zrodlowy nie istnieje." & vbCrlf & sSource, vbOkOnly, "Error"
End If

Set oFso = Nothing
Set oShell = Nothing

WScript.Quit

Function SizeSuffix(Size)
    Dim sSuffix

    Select Case True
        Case InRange(Size, 1024, 1048575)
            Size = Round(Size / 1024, 2)
            sSuffix = " KB"
        Case InRange(Size, 1048576, 1073741823)
            Size = Round(Size / 1048576, 2)
            sSuffix = " MB"
        Case InRange(Size, 1073741824, 1099511627775)
            Size = Round(Size / 1099511627776, 2)
            sSuffix = " GB"
        Case Else
            sSuffix = " Bytes"
    End Select

    SizeSuffix = Size & sSuffix
End Function

Function InRange(Value, Min, Max)
    InRange = Value >= min And Value <= Max
End Function

Podobne pytania

0 głosów
1 odpowiedź 84 wizyt
pytanie zadane 18 czerwca w C# przez disaster Obywatel (1,960 p.)
0 głosów
0 odpowiedzi 48 wizyt
pytanie zadane 4 listopada 2020 w C i C++ przez saintx Nowicjusz (120 p.)
+2 głosów
4 odpowiedzi 139 wizyt
pytanie zadane 12 września 2020 w C i C++ przez Dezmonths Początkujący (310 p.)
Porady nie od parady
Komentarze do pytań nie służą do odpowiadania, od tego jest wydzielona sekcja odpowiedzi. Funkcją komentarzy jest natomiast możliwość uzyskania dodatkowych informacji na temat samego posta.Komentarze

84,835 zapytań

133,644 odpowiedzi

296,137 komentarzy

56,080 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...